From ducasse at iam.unibe.ch Fri Jul 2 12:27:51 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Fri, 2 Jul 2004 12:27:51 +0200 Subject: [SW2] First Commit to SCG StORE In-Reply-To: <022301c45ed6$1b62f960$fb913e51@david715t080hb> References: <686ADE2A-CA04-11D8-AF71-000393CFE6C8@iam.unibe.ch> <022301c45ed6$1b62f960$fb913e51@david715t080hb> Message-ID: <78A21AA6-CC12-11D8-AF90-000A9573EAE2@iam.unibe.ch> Hi david did you loaded it in a fresh image? Because I have the impression that sometimes Stroe checks all the versions to make sure that there is some consistency. But this is only my hypothesis. Stef On 30 juin 04, at 21:11, David R?thlisberger wrote: > > >> As you will see, the design is quite different: maybe somebody wants >> to >> have a look at it and give some comments. > > yes, it looks nice, good job. :) > > So can I now start to port the actions and templates? I have some free > time > tomorrow and Friday. > > BTW: does anyone know why it takes hours to load SmallWiki2 from SCG > store? > I spent at least two hours to load it, even though my internet > connection is > quite fast. I can't understand that, really annoying... What does VW > in the > background when I load a module? > It seems to me that loading from CinCom Store is a bit faster, but > it's also > very slow.... > > kind regards, > David > From davidroe at bluewin.ch Sun Jul 4 13:48:29 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Sun, 4 Jul 2004 13:48:29 +0200 Subject: [SW2] First Commit to SCG StORE References: <686ADE2A-CA04-11D8-AF71-000393CFE6C8@iam.unibe.ch> <022301c45ed6$1b62f960$fb913e51@david715t080hb> <78A21AA6-CC12-11D8-AF90-000A9573EAE2@iam.unibe.ch> Message-ID: <009a01c461bc$d5184520$7d913e51@david715t080hb> hello, > did you loaded it in a fresh image? > Because I have the impression that sometimes Stroe checks all the > versions to make sure that > there is some consistency. But this is only my hypothesis. no, it wasn't a very fresh image, but also not a big or old one. But you're right, i ve now tested with a really fresh image and this was very fast, it did only take around five minutes to load SW2. btw, i have seen that there are some problems when trying to load SW2 from SCG Store in a fresh image without SW1 or SmaCC 1.3 in it. The reason is that SmaCC version 1.3., which is a prerequisite of SW2, is broken in SCG Store, you need SmaCC 1.3Cincom instead. Then there was a bug in class DocumentComponent, which was defined as a subclass of SmallWiki.WikiItem instead of SmallWiki2.WikiItem. I fixed these problems, so everyone can load SW2 directly in a fresh image. But make sure that you load Seaside WebToolKit 2.5a3.12.1 from CinCom Store first. The Seaside version in SCG Store is broken due to a problem with the store, which I couldn't fix... I have also changed the order of the Seaside prerequisites, because it's important that first Seaside-WebToolKit, then Seaside-VW and at last Seaside itself is loaded, because Seaside requires classes that are not in a fresh VW-image but defined in the other two bundles. bye, David From renggli at iam.unibe.ch Sun Jul 4 21:53:49 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Sun, 4 Jul 2004 21:53:49 +0200 Subject: [SW2] First Commit to SCG StORE In-Reply-To: <009a01c461bc$d5184520$7d913e51@david715t080hb> References: <686ADE2A-CA04-11D8-AF71-000393CFE6C8@iam.unibe.ch> <022301c45ed6$1b62f960$fb913e51@david715t080hb> <78A21AA6-CC12-11D8-AF90-000A9573EAE2@iam.unibe.ch> <009a01c461bc$d5184520$7d913e51@david715t080hb> Message-ID: > Then there was a bug in class DocumentComponent, which was defined as a > subclass of SmallWiki.WikiItem instead of SmallWiki2.WikiItem. I fixed > these > problems, so everyone can load SW2 directly in a fresh image. But make > sure > that you load Seaside WebToolKit 2.5a3.12.1 from CinCom Store first. > The Seaside version in SCG Store is broken due to a problem with the > store, > which I couldn't fix... Yeah, thanks for those fixes. I just copied the old classes to the new namespace, but forgot to fix that. They are currently not used in the new model, but I will integrate them as soon as possible. I will continue working on SmallWiki 2 on Monday and Tuesday. I can't give any promises about the progress, but I will try to take the basic functionality as far as possible. > I have also changed the order of the Seaside prerequisites, because > it's > important that first Seaside-WebToolKit, then Seaside-VW and at last > Seaside > itself is loaded, because Seaside requires classes that are not in a > fresh > VW-image but defined in the other two bundles. Great! Thanks again. Lukas -- Lukas Renggli http://renggli.freezope.org From thom-ber at gmx.net Tue Jul 6 15:02:53 2004 From: thom-ber at gmx.net (Thomas Bernitt) Date: Tue, 6 Jul 2004 15:02:53 +0200 (MEST) Subject: swiki to smallwiki importer Message-ID: <12090.1089118973@www56.gmx.net> Hello I read something about a swiki-importer a few days ago, and I am very interested to use it. I found it on Cincoms store, but it was impossible for me to load it - I got error messages... So my question: Is the tool usable and is there anywhere a helpdocument available? I have a swiki (about 1500 pages) and want to convert it to smallwiki - I'm not afraid about the work, but I am not a smalltalk specialist, and want to know, that I have a right chance to get it work :-) Thanks for answer! Thomas From charles at datasof.com Thu Jul 15 17:15:46 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Thu, 15 Jul 2004 11:15:46 -0400 Subject: Bug loading lastest example parcel Message-ID: Hi. First of all , looks like a very nice framework. I was able to load the latest SmallWiki bundle into a VW 7.2 essentially virgin image i.e. base + store. However when I attemp to load the latest SmallWiki Examples bundle I get the error which I have appended below. I am able to load the second to latest. To summarize: SmallWiki Examples: 0.9.26 --- Blessed: Development --- By: lukas --- On: 06/24/2004 2:37:38.000 crashes but 0.9.25 loads fine. thanks Charles ---------------------- Unhandled exception: BlockClosure [] in Signal>>newException Parcel class>>ensureLoadedParcel:withVersion:for: optimized [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: BlockClosure>>ensure: Parcel class>>withFileCachesDo: optimized [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Cursor>>showWhile: Parcel class>>ensureLoadedParcel:withVersion:forPundle: optimized [] in Store.Pundle>>checkParcelPrerequisite:version: BlockClosure>>on:do: Store.Bundle(Store.Pundle)>>checkParcelPrerequisite:version: Store.Bundle(Store.Pundle)>>checkPrerequisite:name:version: [] in Store.Bundle(Store.Pundle)>>checkPrerequisites Array(SequenceableCollection)>>do: Store.Bundle(Store.Pundle)>>checkPrerequisites Store.BundleModel class>>loadFromDB:within: optimized [] in Store.BundleModel class>>newFromDB:within: BlockClosure>>on:do: Store.BundleModel class>>newFromDB:within: Store.Bundle>>loadSrcWithin: optimized [] in [] in Store.Bundle>>loadSrc BlockClosure>>on:do: optimized [] in Store.Bundle>>loadSrc optimized [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>ensure: Cursor>>showWhile: optimized [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in Notice class>>showNotice:complete:while:title: BlockClosure>>ensure: Notice class>>showNotice:complete:while:title: Store.Bundle>>loadSrc Store.Bundle(Store.Pundle)>>loadSrcWithImgPundle: [] in Store.VersionBrowser(Store.AbstractTool)>>loadPundle OrderedCollection>>do: Store.VersionBrowser(Store.AbstractTool)>>loadPundle Store.MultiSequenceController(SequenceController)>>dispatchMenuSymbol: Store.MultiSequenceController(SequenceController)>>dispatchMenuSelection: Store.MultiSequenceController(ControllerWithMenu)>>processMenu:at:centered: Store.MultiSequenceController(ControllerWithMenu)>>processMenuAt:centered: Store.MultiSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent: Store.MultiSequenceController(SequenceController)>>yellowButtonPressedEvent: YellowButtonPressedEvent>>dispatchTo: Store.MultiSequenceController(ControllerWithMenu)>>handleEvent: EventDispatcher>>dispatch:to: EventDispatcher>>dispatchEvent: YellowButtonPressedEvent(Event)>>dispatch YellowButtonPressedEvent(Event)>>dispatchForWindowManager: optimized [] in WindowManager>>safelyDispatchForWindowManager: BlockClosure>>on:do: WindowManager>>safelyDispatchForWindowManager: WindowManager>>processNextEvent optimized [] in [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in Process class>>forBlock:priority: ---------------------------------------------------------------------- Parcel class>>ensureLoadedParcel:withVersion:for: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: parcelName = 'SmallWiki' versionString = '0.9.49' codeReaderOrNil = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: aDirectoryOrNil = nil parcelOrPundle = {SmallWiki} dirs = nil found = nil i = nil dirName = nil dir = nil Context PC = 50 ---------------------------------------------------------------------- optimized [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: an UndefinedObject Temporaries: .self = Parcel .parcelName = 'SmallWiki' .versionString = '0.9.49' .aPundle = {'SmallWiki Examples'-'0.9.26'-10312} newParcel = nil Context PC = 9 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: outerContext = nil copiedValues = an Array[5] Arguments: aBlock = BlockClosure [] in Parcel class>>withFileCachesDo: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Parcel class>>withFileCachesDo: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: aBlock = BlockClosure [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Context PC = 20 ---------------------------------------------------------------------- optimized [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: an UndefinedObject Temporaries: .self = Parcel .parcelName = 'SmallWiki' .versionString = '0.9.49' .aPundle = {'SmallWiki Examples'-'0.9.26'-10312} newParcel = nil Context PC = 14 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 30 image = Depth1Image(extent: 16 at 16 depth: 1) mask = Depth1Image(extent: 16 at 16 depth: 1) hotSpot = 0 at 0 name = 'wait' Arguments: aBlock = BlockClosure [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Temporaries: oldcursor = Cursor wait Context PC = 13 ---------------------------------------------------------------------- Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: parcelName = 'SmallWiki' versionString = '0.9.49' aPundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: newParcel = nil Context PC = 17 ---------------------------------------------------------------------- optimized [] in Store.Pundle>>checkParcelPrerequisite:version: Receiver: an UndefinedObject Temporaries: .reqName = 'SmallWiki' .reqVersion = '0.9.49' .self = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 9 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Store.Pundle>>checkParcelPrerequisite:version: outerContext = nil copiedValues = an Array[3] Arguments: anExceptionSelector = Parcel missingParcelSignal handlerBlock = BlockClosure [] in Store.Pundle>>checkParcelPrerequisite:version: Context PC = 18 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkParcelPrerequisite:version: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: reqName = 'SmallWiki' reqVersion = '0.9.49' Context PC = 12 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkPrerequisite:name:version: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: reqType = #any reqName = 'SmallWiki' reqVersion = '0.9.49' Temporaries: pref = #parcelsFirst message = nil Context PC = 31 ---------------------------------------------------------------------- [] in Store.Bundle(Store.Pundle)>>checkPrerequisites Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: req = an Array[3] Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 15 ---------------------------------------------------------------------- Array(SequenceableCollection)>>do: Receiver: an Array Arguments: aBlock = BlockClosure [] in Store.Pundle>>checkPrerequisites Temporaries: i = 1 Context PC = 19 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkPrerequisites Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Temporaries: reqs = an Array[1] Context PC = 17 ---------------------------------------------------------------------- Store.BundleModel class>>loadFromDB:within: Receiver: a Store.BundleModel class Instance Variables: superclass = Store.PundleModel methodDict = a MethodDictionary[124] format = 16388 subclasses = nil instanceVariables = an Array[0] organization = ('relationships' #relatedBy:) ('printing' #classDescription #describeContents #describeContentsOn:level: #displayString #fileOutChangesForDb:on:within: #fileOutChangesOn:within: #printOn: #storeOn:) ('private-file out' #createOrFindExpression #fileOutChangesOn: #fileOutOn:) ('binary storage' #adjustComponents #dbLoadComponentsWithin:) ('initialize-release' #initializeForReconcileWith: #initializeFromDB: #initializeFromImage: #setContentsFromDB:) ('unloading' #preUnloadChecksFromBundle: #unloadFromImage #unloadLogged:) ('private-change set access' #structureMark) ('public-change set access' #inspectChangeSet) ('accessing-browser' #allClasses #allMetaclasses #allNameSpaces #dataForNamed: #dataForNamed:andProtocol: #includesDataKey:ownerName: #includesDefinitionOf: #includesMethod: #includesSelector:class: #includesSelector:className:meta: #methodsForClassNamed:andProtocol:meta: #methodsForClassNamed:meta: #protocolsForClassNamed:meta: #protocolsForDataIn: #toolListIcon) ('accessing' #addItem: #allContainedItems #allItems #anyContainedItems #changedItemCount #changedItemCountFor: #databaseInformationClass #descriptionsAndLevels #itemCount #leafDescriptions #leafItems #pundleChangesClass #structure #structure: #traceBundle #typeStringForBlessing #uniqueDescriptionsAndLevels) ('private - db storage' #dbContent #dbContentPundleFragments: #storeInDB #updateFrom:) ('table of contents' #completeTableOfContentsNamed: #tableOfBundleContentsOn: #tableOfBundleContentsOn:level: #tableOfBundleContentsOnFile: #tableOfContentsOn: #tableOfContentsOnFile:) ('private-validation' #removeNonexistentComponents #removeNonexistentComponentsRecursive #validateLoadOrder) ('private' #asDBDescription #classOfDbRecord #comparePackages: #descriptionClass #dialogForException: #doUnloadFromImage #emergencyUnload #loadContentsFromDBWithin: #manager #pundlesNotIn:or: #removeComponent: #validateOkayToPublish) ('queries' #definedBindings #definedClasses #definedClassesExcludedSelectors #definedNameSpaces #definedObjects #extensionMethods) ('parcel support' #copyContentsToParcel: #dataNotInParcel:on: #definedClassesNotInParcel: #definedClassesNotInParcel:on: #definedNameSpacesNotInParcel: #definedNameSpacesNotInParcel:on: #methodsNotInParcel:on: #namedObjects #saveAsParcel:saveStructure:saveLinks: #saveAsParcel:saveStructure:saveLinks:parcelOptions: #saveAsParcelFromSpecs:) ('db utilities' #cleanUpOverrides #reconcileWithDb: #setNewTraceTo:) ('private-differences calculation' #computeDiffsBetween:into: #computeDiffsBetweenDBBundle:into: #modifications #modificationsFor:) ('content management' #addComponent: #allContentCollectionsDo: #anyContentDescriptions #component:beingRenamedTo: #containedItems #containedItems: #contentDescriptions #contentDescriptionsFor: #contents) ('compaisons' #comparesTo:) ('testing' #containsDescription: #containsItem: #hasBeenModified #hasBeenModifiedIn: #hasCodeOverridden #hasExtensions #isBundle #isEmpty #isLeaf #overridesSelf) name = #BundleModel classPool = a NameSpaceOfClass[1] environment = a NameSpace[218] Arguments: aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: imgBundle = nil Context PC = 3 ---------------------------------------------------------------------- optimized [] in Store.BundleModel class>>newFromDB:within: Receiver: an UndefinedObject Temporaries: .self = Store.BundleModel .aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} .parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 8 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Store.BundleModel class>>newFromDB:within: outerContext = nil copiedValues = an Array[3] Arguments: anExceptionSelector = Store.PundleModel emergencyUnloadSignal handlerBlock = BlockClosure [] in Store.BundleModel class>>newFromDB:within: Context PC = 18 ---------------------------------------------------------------------- Store.BundleModel class>>newFromDB:within: Receiver: a Store.BundleModel class Instance Variables: superclass = Store.PundleModel methodDict = a MethodDictionary[124] format = 16388 subclasses = nil instanceVariables = an Array[0] organization = ('relationships' #relatedBy:) ('printing' #classDescription #describeContents #describeContentsOn:level: #displayString #fileOutChangesForDb:on:within: #fileOutChangesOn:within: #printOn: #storeOn:) ('private-file out' #createOrFindExpression #fileOutChangesOn: #fileOutOn:) ('binary storage' #adjustComponents #dbLoadComponentsWithin:) ('initialize-release' #initializeForReconcileWith: #initializeFromDB: #initializeFromImage: #setContentsFromDB:) ('unloading' #preUnloadChecksFromBundle: #unloadFromImage #unloadLogged:) ('private-change set access' #structureMark) ('public-change set access' #inspectChangeSet) ('accessing-browser' #allClasses #allMetaclasses #allNameSpaces #dataForNamed: #dataForNamed:andProtocol: #includesDataKey:ownerName: #includesDefinitionOf: #includesMethod: #includesSelector:class: #includesSelector:className:meta: #methodsForClassNamed:andProtocol:meta: #methodsForClassNamed:meta: #protocolsForClassNamed:meta: #protocolsForDataIn: #toolListIcon) ('accessing' #addItem: #allContainedItems #allItems #anyContainedItems #changedItemCount #changedItemCountFor: #databaseInformationClass #descriptionsAndLevels #itemCount #leafDescriptions #leafItems #pundleChangesClass #structure #structure: #traceBundle #typeStringForBlessing #uniqueDescriptionsAndLevels) ('private - db storage' #dbContent #dbContentPundleFragments: #storeInDB #updateFrom:) ('table of contents' #completeTableOfContentsNamed: #tableOfBundleContentsOn: #tableOfBundleContentsOn:level: #tableOfBundleContentsOnFile: #tableOfContentsOn: #tableOfContentsOnFile:) ('private-validation' #removeNonexistentComponents #removeNonexistentComponentsRecursive #validateLoadOrder) ('private' #asDBDescription #classOfDbRecord #comparePackages: #descriptionClass #dialogForException: #doUnloadFromImage #emergencyUnload #loadContentsFromDBWithin: #manager #pundlesNotIn:or: #removeComponent: #validateOkayToPublish) ('queries' #definedBindings #definedClasses #definedClassesExcludedSelectors #definedNameSpaces #definedObjects #extensionMethods) ('parcel support' #copyContentsToParcel: #dataNotInParcel:on: #definedClassesNotInParcel: #definedClassesNotInParcel:on: #definedNameSpacesNotInParcel: #definedNameSpacesNotInParcel:on: #methodsNotInParcel:on: #namedObjects #saveAsParcel:saveStructure:saveLinks: #saveAsParcel:saveStructure:saveLinks:parcelOptions: #saveAsParcelFromSpecs:) ('db utilities' #cleanUpOverrides #reconcileWithDb: #setNewTraceTo:) ('private-differences calculation' #computeDiffsBetween:into: #computeDiffsBetweenDBBundle:into: #modifications #modificationsFor:) ('content management' #addComponent: #allContentCollectionsDo: #anyContentDescriptions #component:beingRenamedTo: #containedItems #containedItems: #contentDescriptions #contentDescriptionsFor: #contents) ('compaisons' #comparesTo:) ('testing' #containsDescription: #containsItem: #hasBeenModified #hasBeenModifiedIn: #hasCodeOverridden #hasExtensions #isBundle #isEmpty #isLeaf #overridesSelf) name = #BundleModel classPool = a NameSpaceOfClass[1] environment = a NameSpace[218] Arguments: aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 19 ---------------------------------------------------------------------- Store.Bundle>>loadSrcWithin: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 5 ---------------------------------------------------------------------- optimized [] in [] in Store.Bundle>>loadSrc Receiver: an UndefinedObject Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} imgBundle = nil Context PC = 7 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Store.Bundle>>loadSrc outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = RedefinitionNotification handlerBlock = BlockClosure [] in [] in Store.Bundle>>loadSrc Context PC = 18 ---------------------------------------------------------------------- optimized [] in Store.Bundle>>loadSrc Receiver: an UndefinedObject Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} imgBundle = nil .leafNames = an OrderedCollection[7] Context PC = 15 ---------------------------------------------------------------------- optimized [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil Context PC = 5 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[2] Arguments: aBlock = BlockClosure [] in Cursor>>showWhile: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 30 image = Depth1Image(extent: 16 at 16 depth: 1) mask = Depth1Image(extent: 16 at 16 depth: 1) hotSpot = 0 at 0 name = 'wait' Arguments: aBlock = BlockClosure [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Temporaries: oldcursor = Cursor normal Context PC = 23 ---------------------------------------------------------------------- optimized [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = IncrementNotification handlerBlock = BlockClosure [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 18 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: anExceptionSelector = MessageNotification handlerBlock = BlockClosure [] in [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 18 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: anExceptionSelector = ResetIncrementNotification handlerBlock = BlockClosure [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 21 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: aBlock = BlockClosure [] in Notice class>>showNotice:complete:while:title: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Notice class>>showNotice:complete:while:title: Receiver: a Notice class Instance Variables: superclass = ApplicationModel methodDict = a MethodDictionary[9] format = 16390 subclasses = nil instanceVariables = an Array[2] organization = ('interface opening' #postOpenWith:) ('aspects' #message: #notice #show: #textView) ('updating' #changedMessages) ('private' #invokePostOpen #on:) ('interface closing' #requestForWindowClose) name = #Notice classPool = a NameSpaceOfClass[0] environment = a NameSpace[560] savedWindowInformation = an IdentityDictionary[0] Arguments: aString = 'Loading SmallWiki Examples(0.9.26,lukas)' anInteger = 172 aBlock = BlockClosure [] in Store.Bundle>>loadSrc titleString = 'Store' Temporaries: noticeModel = a Notice int = 172 increment = 0.00581395 progress = a ValueHolder on: 0.0 res = nil title = 'Store : <1s>%% done' newValue = nil Context PC = 125 ---------------------------------------------------------------------- Store.Bundle>>loadSrc Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Temporaries: imgBundle = nil leafNames = an OrderedCollection[7] Context PC = 30 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>loadSrcWithImgPundle: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: imgPundle = nil Context PC = 35 ---------------------------------------------------------------------- [] in Store.VersionBrowser(Store.AbstractTool)>>loadPundle Receiver: a Store.VersionBrowser Instance Variables: dependents = nil builder = an UIBuilder uiSession = nil eventHandlers = nil versions = a MultiSelectionInList pundles = an OrderedCollection[1] labels = a Dictionary[18] offsets = an Array[3] comment = a ValueHolder on: '--- Blessed: Development --- By: lukas --- On: 06/24/2004 2:37:38.000 ' Arguments: pundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: imgPundle = nil .msg = '<1s> is not linked to the cur...>Do you want to do that now?' .self = a Store.VersionBrowser Context PC = 76 ---------------------------------------------------------------------- OrderedCollection>>do: Receiver: an OrderedCollection Instance Variables: firstIndex = 1 lastIndex = 1 Arguments: aBlock = BlockClosure [] in Store.AbstractTool>>loadPundle Temporaries: index = 1 Context PC = 17 ---------------------------------------------------------------------- Store.VersionBrowser(Store.AbstractTool)>>loadPundle Receiver: a Store.VersionBrowser Instance Variables: dependents = nil builder = an UIBuilder uiSession = nil eventHandlers = nil versions = a MultiSelectionInList pundles = an OrderedCollection[1] labels = a Dictionary[18] offsets = an Array[3] comment = a ValueHolder on: '--- Blessed: Development --- By: lukas --- On: 06/24/2004 2:37:38.000 ' Temporaries: msg = '<1s> is not linked to the cur...>Do you want to do that now?' imgPundle = nil Context PC = 17 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>dispatchMenuSymbol: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: menuSelection = #loadPundle Context PC = 7 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>dispatchMenuSelection: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: menuSelection = #loadPundle Context PC = 14 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>processMenu:at:centered: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: aMenu = a Menu aPoint = 415 at 189 centered = true Temporaries: valueResult = a MenuItem 'Load' Context PC = 41 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>processMenuAt:centered: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: aPoint = 415 at 189 centered = true Context PC = 9 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: event = a YellowButtonPressedEvent Context PC = 13 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>yellowButtonPressedEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: event = a YellowButtonPressedEvent Context PC = 19 ---------------------------------------------------------------------- YellowButtonPressedEvent>>dispatchTo: Receiver: a YellowButtonPressedEvent Instance Variables: time = 12734890 initiator = an EventDispatcher window = an ApplicationWindow 1258 state = 2 x = 283 y = 55 gx = 415 gy = 189 buttonNumber = 2 Arguments: anObject = a Store.MultiSequenceController Context PC = 4 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>handleEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: anEvent = a YellowButtonPressedEvent Context PC = 33 ---------------------------------------------------------------------- EventDispatcher>>dispatch:to: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a TextEditorController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a YellowButtonPressedEvent object = a Store.MultiSequenceController Temporaries: tmp = nil Context PC = 10 ---------------------------------------------------------------------- EventDispatcher>>dispatchEvent: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a TextEditorController trapList = nil state = nil repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a YellowButtonPressedEvent Temporaries: objectWantingControl = a Store.MultiSequenceController targetKeyboardProcessor = nil Context PC = 113 ---------------------------------------------------------------------- YellowButtonPressedEvent(Event)>>dispatch Receiver: a YellowButtonPressedEvent Instance Variables: time = 12734890 initiator = an EventDispatcher window = an ApplicationWindow 1258 state = 2 x = 283 y = 55 gx = 415 gy = 189 buttonNumber = 2 Context PC = 16 ---------------------------------------------------------------------- YellowButtonPressedEvent(Event)>>dispatchForWindowManager: Receiver: a YellowButtonPressedEvent Instance Variables: time = 12734890 initiator = an EventDispatcher window = an ApplicationWindow 1258 state = 2 x = 283 y = 55 gx = 415 gy = 189 buttonNumber = 2 Arguments: aWinMgr = a WindowManager Context PC = 4 ---------------------------------------------------------------------- optimized [] in WindowManager>>safelyDispatchForWindowManager: Receiver: an UndefinedObject Temporaries: .event = a YellowButtonPressedEvent .self = a WindowManager Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = BadControllerError handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: Context PC = 18 ---------------------------------------------------------------------- WindowManager>>safelyDispatchForWindowManager: Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[3] activeController = an ApplicationStandardSystemController interruptLock = false outstandingMetaOrDamage = false modalWindowChain = nil openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Arguments: event = a YellowButtonPressedEvent Context PC = 13 ---------------------------------------------------------------------- WindowManager>>processNextEvent Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[3] activeController = an ApplicationStandardSystemController interruptLock = false outstandingMetaOrDamage = false modalWindowChain = nil openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Temporaries: event = a YellowButtonPressedEvent Context PC = 12 ---------------------------------------------------------------------- optimized [] in [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess Context PC = 18 ---------------------------------------------------------------------- optimized [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 15 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Process class>>forBlock:priority: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in WindowManager>>newProcess Context PC = 9 -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Thu Jul 15 17:24:40 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Thu, 15 Jul 2004 11:24:40 -0400 Subject: Securing access to a page. Message-ID: I have read through the SmallWiki doc and I understand that there are some security enhancements underway but I am wondering if I missed something. I want to be able to at least make it so that users have to login just to get on the wiki in the first place. It would be nice to be able to specify access to a specific branch of the wiki as well. thanks Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From ssastre at seaswork.com.ar Thu Jul 15 18:37:30 2004 From: ssastre at seaswork.com.ar (Sebastian Sastre) Date: Thu, 15 Jul 2004 13:37:30 -0300 Subject: Securing access to a page. In-Reply-To: Message-ID: <000201c46a8a$066fd540$1200a8c0@ENTERPRISE> Charles, if I understand well, that is the same thing I made with some wikis of my own. Lukas guided me to make that in a message in the past: "> Remove all the view permission from the Anonymous-Group. In > VisualWorks > the following code snipped does it for you: > > (server userAt: 'anonymous') roles do: [ :role | > Structure allSubclassesDo: [ :class | > role remove: class permissionView ] ] > > There is also a administration extension that can do the > trick from the > web-interface, but it is currently available in VisualWorks only. > > Hope this helps, > Lukas" I also hope this helps, regards, Sebasti?n Sastre ssastre at seaswork.com.ar www.seaswork.com.ar > -----Mensaje original----- > De: owner-smallwiki at iam.unibe.ch > [mailto:owner-smallwiki at iam.unibe.ch] En nombre de Charles A. Monteiro > Enviado el: Jueves, 15 de Julio de 2004 12:25 > Para: smallwiki at iam.unibe.ch > Asunto: Securing access to a page. > > > I have read through the SmallWiki doc and I understand that > there are some > security enhancements underway but I am wondering if I > missed something. > I want to be able to at least make it so that users have to > login just to > get on the wiki in the first place. It would be nice to be > able to specify > access to a specific branch of the wiki as well. > > thanks > > Charles > > -- > Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ > > --- > Incoming mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.720 / Virus Database: 476 - Release Date: 14/07/2004 > > --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.720 / Virus Database: 476 - Release Date: 14/07/2004 From ducasse at iam.unibe.ch Thu Jul 15 19:03:34 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Thu, 15 Jul 2004 19:03:34 +0200 Subject: Securing access to a page. In-Reply-To: References: Message-ID: Hi charles yes one guy here did a new security model. However, this was not really merged in SmallWiki and we are currently experiencing some bugs with it. So we will see if david vogel wants to help fixing the bugs. Stef On 15 juil. 04, at 17:24, Charles A. Monteiro wrote: > I have read through the SmallWiki doc and I understand that there are > some security enhancements underway but I am wondering if I missed > something. I want to be able to at least make it so that users have to > login just to get on the wiki in the first place. It would be nice to > be able to specify access to a specific branch of the wiki as well. > > thanks > > Charles > > -- > Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ > From charles at datasof.com Thu Jul 15 19:07:17 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Thu, 15 Jul 2004 13:07:17 -0400 Subject: Securing access to a page. In-Reply-To: <000201c46a8a$066fd540$1200a8c0@ENTERPRISE> References: <000201c46a8a$066fd540$1200a8c0@ENTERPRISE> Message-ID: thanks, I'll try that out. BTW, do you know where I can find the admin extension you mention? I am actually running this on VW. I suppose its on the public repository but what is its name if you recall. thanks Charles On Thu, 15 Jul 2004 13:37:30 -0300, Sebastian Sastre wrote: > Charles, > if I understand well, that is the same thing I made with some > wikis of my own. > > Lukas guided me to make that in a message in the past: > > "> Remove all the view permission from the Anonymous-Group. In >> VisualWorks >> the following code snipped does it for you: >> >> (server userAt: 'anonymous') roles do: [ :role | >> Structure allSubclassesDo: [ :class | >> role remove: class permissionView ] ] >> >> There is also a administration extension that can do the >> trick from the >> web-interface, but it is currently available in VisualWorks only. >> >> Hope this helps, >> Lukas" > > I also hope this helps, > > regards, > > Sebasti?n Sastre > ssastre at seaswork.com.ar > www.seaswork.com.ar > > >> -----Mensaje original----- >> De: owner-smallwiki at iam.unibe.ch >> [mailto:owner-smallwiki at iam.unibe.ch] En nombre de Charles A. Monteiro >> Enviado el: Jueves, 15 de Julio de 2004 12:25 >> Para: smallwiki at iam.unibe.ch >> Asunto: Securing access to a page. >> >> >> I have read through the SmallWiki doc and I understand that >> there are some >> security enhancements underway but I am wondering if I >> missed something. >> I want to be able to at least make it so that users have to >> login just to >> get on the wiki in the first place. It would be nice to be >> able to specify >> access to a specific branch of the wiki as well. >> >> thanks >> >> Charles >> >> -- >> Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ >> >> --- >> Incoming mail is certified Virus Free. >> Checked by AVG anti-virus system (http://www.grisoft.com). >> Version: 6.0.720 / Virus Database: 476 - Release Date: 14/07/2004 >> >> > > --- > Outgoing mail is certified Virus Free. > Checked by AVG anti-virus system (http://www.grisoft.com). > Version: 6.0.720 / Virus Database: 476 - Release Date: 14/07/2004 > -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Thu Jul 15 20:36:14 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Thu, 15 Jul 2004 14:36:14 -0400 Subject: Suggestions for the FAQ Message-ID: My policy is that if I am helped out by somebody's response that it is only correct for me to do my part and spend a couple minutes formatting something i.e. if there is something like a Wiki around. I just tried to do so but I did not have the correct permissions :). I suggest that for a FAQ that anybody that is actually on the mailing list should be allowed to make entries to at least the FAQ page. This should not be all that hard to automate but in the interim perhaps a FAQ submission form or even simpler give me permission because I can guarantee that I will have at least 7 questions :) Secondly, I suggest that the FAQ page follow the standard format for FAQs i.e. where there is list of questions at the top of the document which hyper link to answers within the same page. It is very easy to keep up and to follow i.e. the html is simple. thanks Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From ducasse at iam.unibe.ch Thu Jul 15 21:17:57 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Thu, 15 Jul 2004 21:17:57 +0200 Subject: Suggestions for the FAQ In-Reply-To: References: Message-ID: hi charles Please edit the SmallWiki FAQ. Normally you should have the right to edit it without any probles/ Let me know if you cannot edit the page. http://kilana.unibe.ch:9090/smallwiki/faq/ stef On 15 juil. 04, at 20:36, Charles A. Monteiro wrote: > My policy is that if I am helped out by somebody's response that it is > only correct for me to do my part and spend a couple minutes > formatting something i.e. if there is something like a Wiki around. I > just tried to do so but I did not have the correct permissions :). > > I suggest that for a FAQ that anybody that is actually on the mailing > list should be allowed to make entries to at least the FAQ page. This > should not be all that hard to automate but in the interim perhaps a > FAQ submission form or even simpler give me permission because I can > guarantee that I will have at least 7 questions :) > > Secondly, I suggest that the FAQ page follow the standard format for > FAQs i.e. where there is list of questions at the top of the document > which hyper link to answers within the same page. It is very easy to > keep up and to follow i.e. the html is simple. > > thanks > > Charles > > > -- > Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ > From charles at datasof.com Fri Jul 16 13:47:11 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Fri, 16 Jul 2004 07:47:11 -0400 Subject: Suggestions for the FAQ In-Reply-To: References: Message-ID: that is what I said i.e. I could not edit the page but perhaps now that I think about it may be because I was trying to put in a Smalltalk code snippet for example purposes. Ok, I'll now try again but this time putting in the Smalltalk code snippet as a ST comment. thanks Charles On Thu, 15 Jul 2004 21:17:57 +0200, st?phane ducasse wrote: > hi charles > > Please edit the SmallWiki FAQ. > Normally you should have the right to edit it without any probles/ > Let me know if you cannot edit the page. > http://kilana.unibe.ch:9090/smallwiki/faq/ > > stef > > > On 15 juil. 04, at 20:36, Charles A. Monteiro wrote: > >> My policy is that if I am helped out by somebody's response that it is >> only correct for me to do my part and spend a couple minutes formatting >> something i.e. if there is something like a Wiki around. I just tried >> to do so but I did not have the correct permissions :). >> >> I suggest that for a FAQ that anybody that is actually on the mailing >> list should be allowed to make entries to at least the FAQ page. This >> should not be all that hard to automate but in the interim perhaps a >> FAQ submission form or even simpler give me permission because I can >> guarantee that I will have at least 7 questions :) >> >> Secondly, I suggest that the FAQ page follow the standard format for >> FAQs i.e. where there is list of questions at the top of the document >> which hyper link to answers within the same page. It is very easy to >> keep up and to follow i.e. the html is simple. >> >> thanks >> >> Charles >> >> >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Fri Jul 16 13:47:11 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Fri, 16 Jul 2004 07:47:11 -0400 Subject: Suggestions for the FAQ In-Reply-To: References: Message-ID: that is what I said i.e. I could not edit the page but perhaps now that I think about it may be because I was trying to put in a Smalltalk code snippet for example purposes. Ok, I'll now try again but this time putting in the Smalltalk code snippet as a ST comment. thanks Charles On Thu, 15 Jul 2004 21:17:57 +0200, st?phane ducasse wrote: > hi charles > > Please edit the SmallWiki FAQ. > Normally you should have the right to edit it without any probles/ > Let me know if you cannot edit the page. > http://kilana.unibe.ch:9090/smallwiki/faq/ > > stef > > > On 15 juil. 04, at 20:36, Charles A. Monteiro wrote: > >> My policy is that if I am helped out by somebody's response that it is >> only correct for me to do my part and spend a couple minutes formatting >> something i.e. if there is something like a Wiki around. I just tried >> to do so but I did not have the correct permissions :). >> >> I suggest that for a FAQ that anybody that is actually on the mailing >> list should be allowed to make entries to at least the FAQ page. This >> should not be all that hard to automate but in the interim perhaps a >> FAQ submission form or even simpler give me permission because I can >> guarantee that I will have at least 7 questions :) >> >> Secondly, I suggest that the FAQ page follow the standard format for >> FAQs i.e. where there is list of questions at the top of the document >> which hyper link to answers within the same page. It is very easy to >> keep up and to follow i.e. the html is simple. >> >> thanks >> >> Charles >> >> >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From Roel.Wuyts at ulb.ac.be Fri Jul 16 14:59:41 2004 From: Roel.Wuyts at ulb.ac.be (Roel Wuyts) Date: Fri, 16 Jul 2004 14:59:41 +0200 Subject: Double posts? Message-ID: <00CC7569-D728-11D8-87FE-000A95C8D208@ulb.ac.be> Hello all, I am silently following the discussion on this list (I'll become more vocal when my students start to work on their projects in the first semester, I guess :-) ). Recently I (and someody else here from the ULB) noticed that I receive a number of posts twice. Not all of them - just some. This made me wonder whether we're the only exhibiting these problems. If so, it could be because our university mail server does something weird. And yes, before somebody asks, I checked, and I am not subscribed twice :-) -- Roel Wuyts DeComp roel.wuyts at ulb.ac.be Universit? Libre de Bruxelles http://homepages.ulb.ac.be/~rowuyts/ Belgique Board Member of the European Smalltalk User Group: www.esug.org From charles at datasof.com Fri Jul 16 15:20:59 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Fri, 16 Jul 2004 09:20:59 -0400 Subject: Double posts? In-Reply-To: <00CC7569-D728-11D8-87FE-000A95C8D208@ulb.ac.be> References: <00CC7569-D728-11D8-87FE-000A95C8D208@ulb.ac.be> Message-ID: Roel: I can offer one reason since I just experienced it in my last post. At least from my browser (Opera) when I press "reply all" as I am in the habit of doing, Opera will place two entries in the "to:" field. I am assuming that the reason is because the mail that comes from the SmallWiki mailing list has an entry specifying the mailing list address in the "to" and "reply to" fields. This is by no means unique to the SmallWiki mailing list. Members can of course be aware of this and not use "reply all" :) -Charles On Fri, 16 Jul 2004 14:59:41 +0200, Roel Wuyts wrote: > Hello all, > I am silently following the discussion on this list (I'll become more > vocal when my students start to work on their projects in the first > semester, I guess :-) ). > > Recently I (and someody else here from the ULB) noticed that I receive a > number of posts twice. Not all of them - just some. This made me wonder > whether we're the only exhibiting these problems. If so, it could be > because our university mail server does something weird. And yes, before > somebody asks, I checked, and I am not subscribed twice :-) > > -- > Roel Wuyts > DeComp > roel.wuyts at ulb.ac.be Universit? Libre de > Bruxelles > http://homepages.ulb.ac.be/~rowuyts/ > Belgique > Board Member of the European Smalltalk User Group: www.esug.org -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Fri Jul 16 15:21:56 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Fri, 16 Jul 2004 09:21:56 -0400 Subject: SmallWiki FAQ Message-ID: I took the liberty of re-formatting the FAQ as well as adding an answer that I had been helped with. This should make it a lot easier to follow. I do have one question. I was not able to use a relative url to the page as I am able to do in WikiWorks. For example in WikiWorks I can do the following: How do I change the stylesheet specification to take a local file? and somewhere in the same document place: blah, blah , etc However, in SmallWiki I was not able to do that but had to specify a relative url to the Wiki root: How do I change the stylesheet specification to take a local file? and then place: blah, blah , etc which works fine but just made me type a little more. Is there a shorthand that I can specify instead? -Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Fri Jul 16 16:42:46 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Fri, 16 Jul 2004 10:42:46 -0400 Subject: Boss Storage or OmniBase Storage Message-ID: I a bit uncomfortable with storing the pages entirely in the image. On the other hand I can see how using SIXX on a large wiki can maybe get slow i.e. SIXX is verbose (Xml is verbose). How long does it take to snapshot the SmallWiki wiki using SIXX? I also noticed that currently there is not a BOSS based storage mechanism for SmallWiki. Is that because of issues associated to schema changes? I was wondering about hooking SmallWiki to something like OmniBase? Any thoughts there? Any real hurdles or is it a matter of just doing it? -Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From johnson at cs.uiuc.edu Fri Jul 16 17:10:27 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Fri, 16 Jul 2004 10:10:27 -0500 (CDT) Subject: Boss Storage or OmniBase Storage Message-ID: <200407161510.KAA28797@salad.cs.uiuc.edu> I plan to make a fast, efficient, and reliable storage system for SmallWiki at Camp Smalltalk next week. So, wait a week and there will be something much better. -Ralph Johnson From charles at datasof.com Mon Jul 19 14:34:03 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 08:34:03 -0400 Subject: Seaside version Message-ID: Is there anyway that a preview version of the SmallWiki port to Seaside can be made available. Also as I had mentioned in a previous post I am not able to load the latest examples package which is where folks are meant to add extensions (plugins) to SmallWiki. thanks Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From renggli at iam.unibe.ch Mon Jul 19 15:19:46 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 19 Jul 2004 15:19:46 +0200 Subject: Seaside version In-Reply-To: References: Message-ID: <4E55036B-D986-11D8-843E-000393CFE6C8@iam.unibe.ch> > Is there anyway that a preview version of the SmallWiki port to > Seaside can be made available. Also as I had mentioned in a previous > post I am not able to load the latest examples package which is where > folks are meant to add extensions (plugins) to SmallWiki. Sorry for not replaying to the previous post! Currently SmallWiki 2 (Seaside based) is under development. I will post a first preview as soon as it is possible to edit pages ;) The examples package contains example extensions described in the documentation of SmallWiki. Why are you unable to load it? Is there an error message displayed? Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From charles at datasof.com Mon Jul 19 15:56:15 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 09:56:15 -0400 Subject: Seaside version In-Reply-To: <4E55036B-D986-11D8-843E-000393CFE6C8@iam.unibe.ch> References: <4E55036B-D986-11D8-843E-000393CFE6C8@iam.unibe.ch> Message-ID: There was an error message which was included in my last post. I will soon try to replicate this again and re-post. -Charles On Mon, 19 Jul 2004 15:19:46 +0200, Lukas Renggli wrote: >> Is there anyway that a preview version of the SmallWiki port to Seaside >> can be made available. Also as I had mentioned in a previous post I am >> not able to load the latest examples package which is where folks are >> meant to add extensions (plugins) to SmallWiki. > > Sorry for not replaying to the previous post! > > Currently SmallWiki 2 (Seaside based) is under development. I will post > a first preview as soon as it is possible to edit pages ;) > > The examples package contains example extensions described in the > documentation of SmallWiki. Why are you unable to load it? Is there an > error message displayed? > > Cheers, > Lukas > -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Mon Jul 19 16:42:49 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 10:42:49 -0400 Subject: Here is the copy stack for bug when loading examples Message-ID: I have attached the copy stack below. Some sniffing around indicates that: Apparently upon checking for the pre-reqs to: {'SmallWiki Examples'-'0.9.26'-10312} package'SmallWiki' of version: '0.9.49' is found. Then the parcel loading code and I quote: "If the parcel is already loaded check its version and bail if its not acceptable." and it does indeed bail :) because I have SmallWiki version '0.9.51' loaded i.e. the latest version. So changing the pre-req to 'SmallWiki Examples' so that it does not specify a version for SmallWiki would work unless of course it really only works with version SmallWiki '0.9.49' and not with '0.9.51'. Please let me know when this has been addressed, I am eager to check out what is there as far as extensions. -Charles --------------------------------------------------------- Unhandled exception: BlockClosure [] in Signal>>newException Parcel class>>ensureLoadedParcel:withVersion:for: optimized [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: BlockClosure>>ensure: Parcel class>>withFileCachesDo: optimized [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Cursor>>showWhile: Parcel class>>ensureLoadedParcel:withVersion:forPundle: optimized [] in Store.Pundle>>checkParcelPrerequisite:version: BlockClosure>>on:do: Store.Bundle(Store.Pundle)>>checkParcelPrerequisite:version: Store.Bundle(Store.Pundle)>>checkPrerequisite:name:version: [] in Store.Bundle(Store.Pundle)>>checkPrerequisites Array(SequenceableCollection)>>do: Store.Bundle(Store.Pundle)>>checkPrerequisites Store.BundleModel class>>loadFromDB:within: optimized [] in Store.BundleModel class>>newFromDB:within: BlockClosure>>on:do: Store.BundleModel class>>newFromDB:within: Store.Bundle>>loadSrcWithin: optimized [] in [] in Store.Bundle>>loadSrc BlockClosure>>on:do: optimized [] in Store.Bundle>>loadSrc optimized [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>ensure: Cursor>>showWhile: optimized [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in [] in Notice class>>showNotice:complete:while:title: BlockClosure>>on:do: optimized [] in Notice class>>showNotice:complete:while:title: BlockClosure>>ensure: Notice class>>showNotice:complete:while:title: Store.Bundle>>loadSrc Store.Bundle(Store.Pundle)>>loadSrcWithImgPundle: [] in Store.VersionBrowser(Store.AbstractTool)>>loadPundle OrderedCollection>>do: Store.VersionBrowser(Store.AbstractTool)>>loadPundle Store.MultiSequenceController(SequenceController)>>dispatchMenuSymbol: Store.MultiSequenceController(SequenceController)>>dispatchMenuSelection: Store.MultiSequenceController(ControllerWithMenu)>>processMenu:at:centered: Store.MultiSequenceController(ControllerWithMenu)>>processMenuAt:centered: Store.MultiSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent: Store.MultiSequenceController(SequenceController)>>yellowButtonPressedEvent: YellowButtonPressedEvent>>dispatchTo: Store.MultiSequenceController(ControllerWithMenu)>>handleEvent: EventDispatcher>>dispatch:to: EventDispatcher>>dispatchEvent: YellowButtonPressedEvent(Event)>>dispatch YellowButtonPressedEvent(Event)>>dispatchForWindowManager: optimized [] in WindowManager>>safelyDispatchForWindowManager: BlockClosure>>on:do: WindowManager>>safelyDispatchForWindowManager: WindowManager>>processNextEvent optimized [] in [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in WindowManager>>newProcess BlockClosure>>on:do: optimized [] in Process class>>forBlock:priority: ---------------------------------------------------------------------- Parcel class>>ensureLoadedParcel:withVersion:for: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: parcelName = 'SmallWiki' versionString = '0.9.49' codeReaderOrNil = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: aDirectoryOrNil = nil parcelOrPundle = {SmallWiki} dirs = nil found = nil i = nil dirName = nil dir = nil Context PC = 50 ---------------------------------------------------------------------- optimized [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: an UndefinedObject Temporaries: .self = Parcel .parcelName = 'SmallWiki' .versionString = '0.9.49' .aPundle = {'SmallWiki Examples'-'0.9.26'-10312} newParcel = nil Context PC = 9 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: outerContext = nil copiedValues = an Array[5] Arguments: aBlock = BlockClosure [] in Parcel class>>withFileCachesDo: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Parcel class>>withFileCachesDo: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: aBlock = BlockClosure [] in [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Context PC = 20 ---------------------------------------------------------------------- optimized [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: an UndefinedObject Temporaries: .self = Parcel .parcelName = 'SmallWiki' .versionString = '0.9.49' .aPundle = {'SmallWiki Examples'-'0.9.26'-10312} newParcel = nil Context PC = 14 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 36 image = Depth1Image(extent: 16 at 16 depth: 1) mask = Depth1Image(extent: 16 at 16 depth: 1) hotSpot = 0 at 0 name = 'wait' Arguments: aBlock = BlockClosure [] in Parcel class>>ensureLoadedParcel:withVersion:forPundle: Temporaries: oldcursor = Cursor wait Context PC = 13 ---------------------------------------------------------------------- Parcel class>>ensureLoadedParcel:withVersion:forPundle: Receiver: a Parcel class Instance Variables: superclass = CodeComponent methodDict = a MethodDictionary[229] format = 16393 subclasses = nil instanceVariables = an Array[7] organization = ('initialize-release' #initialize) ('accessing' #bundleName #bundleName: #packageName #packageName: #postUnloadBlock #pundleName #summary #toolListIcon #version #version: #versionString) ('copying' #postCopy) ('printing' #displayString #listEntry #printOn: #putStatsOn:) ('change management' #addBinding:in: #addBinding:in:attributes: #addClass: #addClass:attributes: #addDoIt: #addNameSpace: #addNameSpace:attributes: #addSelector:class: #addSelector:class:attributes: #changeBinding:in: #changeBinding:in:attributes: #changeClass: #changeClass:attributes: #changeNameSpace: #changeNameSpace:attributes: #changeSelector:class: #changeSelector:class:attributes: #changeSelector:class:protocol: #commentClass: #commentNameSpace: #relocateBinding:from:to: #relocateClass:from:to: #relocateNameSpace:from:to: #removeBinding:in: #removeClass: #removeDoIt: #removeEntiretyOfClass: #removeNameSpace: #removeSelector:class: #renameBinding:in:as: #renameClass:as: #renameNameSpace:as: #reorganizeClass: #reorganizeClassData: #reorganizeNameSpace:) ('editing' #addChangeSet: #addChangesToChangeList: #addClassAndAllSelectors: #addClasses: #addClassesAndAllSelectors: #addEntiretyOfClass: #addEntiretyOfClasses: #addName:in: #addNames:in: #addObject: #addObject:named: #addSelector:forClass: #addSelector:toClass: #addSelectors:forClass: #addStatic:to: #cleanse #discard #empty #removeChangeSet: #removeClasses: #removeEntiretyOfClasses: #removeName:in: #removeNames:in: #removeObject: #removeSelector:forClass: #removeSelectors:forClass: #removeStatic:from: #undefineClass: #update:with:from:) ('ui' #fileOutAsFor: #saveParcelDialogFor: #saveParcelDialogFor:preOpen:preSave: #uiForEmpty #uiForRename) ('load/unload' #abortLoadBecause: #abortSaveBecause: #abortUnloadBecause: #createOrFindExpression #fileIntoFrom: #fileOutOn: #packageEnvironment #packageUndeclared #parcelOutOn:withSource:hideOnLoad:republish:backup: #prerequisitesForLoading #remove #unload) ('queries' #allCallsOn: #allImplementorsOf: #classesAndSelectorsDo: #containsSelectors:forClass: #danglingReferencesIfUnloadedDo: #definedAndExtendedClasses #definedBindings #definedBindingsDo: #definedBindingsFor: #definedClasses #definedClassesDo: #definedNamesFor: #definedNameSpaces #definedObjects #definedObjectsDo: #definedOrExtendedClassNamesFor: #definedProtocolsFor: #definedSelectorsFor: #definedSelectorsFor:andProtocol: #definedStaticReferences #definedThings #definesClass: #definesClassOrNameSpace: #definesName:in: #definesObject: #definesOrExtendsBehavior: #definesOrExtendsClass: #definesSelector:forClass: #extendedBehaviors #extendedClasses #extendsBehavior: #extendsClass: #extendsObject: #extensionsDo: #externalMethodsUsedExclusively #getCategoriesOfClasses #getChildrenObjects #loadedPrerequisites #methodsDo: #namedObjects #overridesDo: #unparceledMethodsOfDefinedClasses) ('change set compatibility' #addOtherChange: #atClass:includes: #atName:includes: #atSelector:class: #changedClasses #propertyChanged: #propertyChanged:value:) ('testing' #hasCodeOverriddenByOtherParcels #hasDanglingReferencesIfUnloaded #hasExtendedClasses #hasExtendedNameSpaces #hasExtensions #hasItselfBeenModified #hasOverriddenCode #hasUninstalledCode #isDirty #isEmpty #isLoaded #isParcel #isSaveable #notEmpty) ('private' #adviseManager #checkedActionMethod: #definedClassesExcludedSelectors #definedClassExcludedSelectors: #extensionMethods #forPackage:do: #installUninstalledBindings #installUninstalledClasses #installUninstalledMethods #manager #markAsClean #markAsDirty #markNotModified #nonMetaClassOf: #performAction: #postLoad: #setActionMethod:class:selector: #unloadLogged: #unloadSource #unloadSourceSafely: #writeDefinition:on: #writeMethods:on: #writeRemovalScriptOn:) ('private-selectors' #classesThatHaveBindings #classesThatHaveSelectors #hasBindingsFor: #hasSelectorsFor: #objectsThatHaveBindings #selectorsAt:) ('actions' #executeActionBlock:for:) ('overrides' #comparesTo: #overriddenClass: #overriddenNameSpace: #overriddenSelector:class: #overriddenStatic:in: #reinstalledClass: #reinstalledNameSpace: #reinstalledSelector:class: #reinstalledStatic:in: #removeOverriddenClass: #removeOverriddenNameSpace: #removeOverriddenSelector:class: #removeOverriddenStatic:nameSpace:) ('store-utilities' #classOfDbRecord #relatedPackage #relatedParcel) ('store' #asDBRecord #asPackage #asPackageNamed: #checkPrerequisiteNamed:withVersion:requiredVersion: #copyPropertiesTo: #moveContentsTo: #traceVersion #traceVersionString) ('private-load/unload' #addSpecialItemsFrom: #doComponentLoadedActions #doComponentUpdatingActions: #putStoredPropertiesIn: #queryLoaded:ifLoadedAndOK:ifFail: #removeClass:unloaded: #removeNameSpace:unloaded: #runClassExtensionPostLoadMethods #setParcelPropertyFrom:) ('converting' #asParcel) ('private-editing' #addChangesFor:instanceSelectors:classSelectors:to:bindings:source:) ('Refactoring Browser' #allClassesAndNameSpaces #isUnparceledParcel #textForItem) name = #Parcel classPool = a NameSpaceOfClass[2] environment = a NameSpace[227] parcels = a List[58] classParcelMap = nil parcelFileInfoCache = a Dictionary[0] parcelFileDirectoryCache = a Dictionary[0] Arguments: parcelName = 'SmallWiki' versionString = '0.9.49' aPundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: newParcel = nil Context PC = 17 ---------------------------------------------------------------------- optimized [] in Store.Pundle>>checkParcelPrerequisite:version: Receiver: an UndefinedObject Temporaries: .reqName = 'SmallWiki' .reqVersion = '0.9.49' .self = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 9 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Store.Pundle>>checkParcelPrerequisite:version: outerContext = nil copiedValues = an Array[3] Arguments: anExceptionSelector = Parcel missingParcelSignal handlerBlock = BlockClosure [] in Store.Pundle>>checkParcelPrerequisite:version: Context PC = 18 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkParcelPrerequisite:version: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: reqName = 'SmallWiki' reqVersion = '0.9.49' Context PC = 12 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkPrerequisite:name:version: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: reqType = #any reqName = 'SmallWiki' reqVersion = '0.9.49' Temporaries: pref = #parcelsFirst message = nil Context PC = 31 ---------------------------------------------------------------------- [] in Store.Bundle(Store.Pundle)>>checkPrerequisites Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: req = an Array[3] Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 15 ---------------------------------------------------------------------- Array(SequenceableCollection)>>do: Receiver: an Array Arguments: aBlock = BlockClosure [] in Store.Pundle>>checkPrerequisites Temporaries: i = 1 Context PC = 19 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>checkPrerequisites Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Temporaries: reqs = an Array[1] Context PC = 17 ---------------------------------------------------------------------- Store.BundleModel class>>loadFromDB:within: Receiver: a Store.BundleModel class Instance Variables: superclass = Store.PundleModel methodDict = a MethodDictionary[124] format = 16388 subclasses = nil instanceVariables = an Array[0] organization = ('relationships' #relatedBy:) ('printing' #classDescription #describeContents #describeContentsOn:level: #displayString #fileOutChangesForDb:on:within: #fileOutChangesOn:within: #printOn: #storeOn:) ('private-file out' #createOrFindExpression #fileOutChangesOn: #fileOutOn:) ('binary storage' #adjustComponents #dbLoadComponentsWithin:) ('initialize-release' #initializeForReconcileWith: #initializeFromDB: #initializeFromImage: #setContentsFromDB:) ('unloading' #preUnloadChecksFromBundle: #unloadFromImage #unloadLogged:) ('private-change set access' #structureMark) ('public-change set access' #inspectChangeSet) ('accessing-browser' #allClasses #allMetaclasses #allNameSpaces #dataForNamed: #dataForNamed:andProtocol: #includesDataKey:ownerName: #includesDefinitionOf: #includesMethod: #includesSelector:class: #includesSelector:className:meta: #methodsForClassNamed:andProtocol:meta: #methodsForClassNamed:meta: #protocolsForClassNamed:meta: #protocolsForDataIn: #toolListIcon) ('accessing' #addItem: #allContainedItems #allItems #anyContainedItems #changedItemCount #changedItemCountFor: #databaseInformationClass #descriptionsAndLevels #itemCount #leafDescriptions #leafItems #pundleChangesClass #structure #structure: #traceBundle #typeStringForBlessing #uniqueDescriptionsAndLevels) ('private - db storage' #dbContent #dbContentPundleFragments: #storeInDB #updateFrom:) ('table of contents' #completeTableOfContentsNamed: #tableOfBundleContentsOn: #tableOfBundleContentsOn:level: #tableOfBundleContentsOnFile: #tableOfContentsOn: #tableOfContentsOnFile:) ('private-validation' #removeNonexistentComponents #removeNonexistentComponentsRecursive #validateLoadOrder) ('private' #asDBDescription #classOfDbRecord #comparePackages: #descriptionClass #dialogForException: #doUnloadFromImage #emergencyUnload #loadContentsFromDBWithin: #manager #pundlesNotIn:or: #removeComponent: #validateOkayToPublish) ('queries' #definedBindings #definedClasses #definedClassesExcludedSelectors #definedNameSpaces #definedObjects #extensionMethods) ('parcel support' #copyContentsToParcel: #dataNotInParcel:on: #definedClassesNotInParcel: #definedClassesNotInParcel:on: #definedNameSpacesNotInParcel: #definedNameSpacesNotInParcel:on: #methodsNotInParcel:on: #namedObjects #saveAsParcel:saveStructure:saveLinks: #saveAsParcel:saveStructure:saveLinks:parcelOptions: #saveAsParcelFromSpecs:) ('db utilities' #cleanUpOverrides #reconcileWithDb: #setNewTraceTo:) ('private-differences calculation' #computeDiffsBetween:into: #computeDiffsBetweenDBBundle:into: #modifications #modificationsFor:) ('content management' #addComponent: #allContentCollectionsDo: #anyContentDescriptions #component:beingRenamedTo: #containedItems #containedItems: #contentDescriptions #contentDescriptionsFor: #contents) ('compaisons' #comparesTo:) ('testing' #containsDescription: #containsItem: #hasBeenModified #hasBeenModifiedIn: #hasCodeOverridden #hasExtensions #isBundle #isEmpty #isLeaf #overridesSelf) name = #BundleModel classPool = a NameSpaceOfClass[1] environment = a NameSpace[218] Arguments: aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: imgBundle = nil Context PC = 3 ---------------------------------------------------------------------- optimized [] in Store.BundleModel class>>newFromDB:within: Receiver: an UndefinedObject Temporaries: .self = Store.BundleModel .aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} .parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 8 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Store.BundleModel class>>newFromDB:within: outerContext = nil copiedValues = an Array[3] Arguments: anExceptionSelector = Store.PundleModel emergencyUnloadSignal handlerBlock = BlockClosure [] in Store.BundleModel class>>newFromDB:within: Context PC = 18 ---------------------------------------------------------------------- Store.BundleModel class>>newFromDB:within: Receiver: a Store.BundleModel class Instance Variables: superclass = Store.PundleModel methodDict = a MethodDictionary[124] format = 16388 subclasses = nil instanceVariables = an Array[0] organization = ('relationships' #relatedBy:) ('printing' #classDescription #describeContents #describeContentsOn:level: #displayString #fileOutChangesForDb:on:within: #fileOutChangesOn:within: #printOn: #storeOn:) ('private-file out' #createOrFindExpression #fileOutChangesOn: #fileOutOn:) ('binary storage' #adjustComponents #dbLoadComponentsWithin:) ('initialize-release' #initializeForReconcileWith: #initializeFromDB: #initializeFromImage: #setContentsFromDB:) ('unloading' #preUnloadChecksFromBundle: #unloadFromImage #unloadLogged:) ('private-change set access' #structureMark) ('public-change set access' #inspectChangeSet) ('accessing-browser' #allClasses #allMetaclasses #allNameSpaces #dataForNamed: #dataForNamed:andProtocol: #includesDataKey:ownerName: #includesDefinitionOf: #includesMethod: #includesSelector:class: #includesSelector:className:meta: #methodsForClassNamed:andProtocol:meta: #methodsForClassNamed:meta: #protocolsForClassNamed:meta: #protocolsForDataIn: #toolListIcon) ('accessing' #addItem: #allContainedItems #allItems #anyContainedItems #changedItemCount #changedItemCountFor: #databaseInformationClass #descriptionsAndLevels #itemCount #leafDescriptions #leafItems #pundleChangesClass #structure #structure: #traceBundle #typeStringForBlessing #uniqueDescriptionsAndLevels) ('private - db storage' #dbContent #dbContentPundleFragments: #storeInDB #updateFrom:) ('table of contents' #completeTableOfContentsNamed: #tableOfBundleContentsOn: #tableOfBundleContentsOn:level: #tableOfBundleContentsOnFile: #tableOfContentsOn: #tableOfContentsOnFile:) ('private-validation' #removeNonexistentComponents #removeNonexistentComponentsRecursive #validateLoadOrder) ('private' #asDBDescription #classOfDbRecord #comparePackages: #descriptionClass #dialogForException: #doUnloadFromImage #emergencyUnload #loadContentsFromDBWithin: #manager #pundlesNotIn:or: #removeComponent: #validateOkayToPublish) ('queries' #definedBindings #definedClasses #definedClassesExcludedSelectors #definedNameSpaces #definedObjects #extensionMethods) ('parcel support' #copyContentsToParcel: #dataNotInParcel:on: #definedClassesNotInParcel: #definedClassesNotInParcel:on: #definedNameSpacesNotInParcel: #definedNameSpacesNotInParcel:on: #methodsNotInParcel:on: #namedObjects #saveAsParcel:saveStructure:saveLinks: #saveAsParcel:saveStructure:saveLinks:parcelOptions: #saveAsParcelFromSpecs:) ('db utilities' #cleanUpOverrides #reconcileWithDb: #setNewTraceTo:) ('private-differences calculation' #computeDiffsBetween:into: #computeDiffsBetweenDBBundle:into: #modifications #modificationsFor:) ('content management' #addComponent: #allContentCollectionsDo: #anyContentDescriptions #component:beingRenamedTo: #containedItems #containedItems: #contentDescriptions #contentDescriptionsFor: #contents) ('compaisons' #comparesTo:) ('testing' #containsDescription: #containsItem: #hasBeenModified #hasBeenModifiedIn: #hasCodeOverridden #hasExtensions #isBundle #isEmpty #isLeaf #overridesSelf) name = #BundleModel classPool = a NameSpaceOfClass[1] environment = a NameSpace[218] Arguments: aDBBundle = {'SmallWiki Examples'-'0.9.26'-10312} parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 19 ---------------------------------------------------------------------- Store.Bundle>>loadSrcWithin: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: parentBundle = {'SmallWiki Examples'-'0.9.26'-10312} Context PC = 5 ---------------------------------------------------------------------- optimized [] in [] in Store.Bundle>>loadSrc Receiver: an UndefinedObject Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} imgBundle = nil Context PC = 7 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Store.Bundle>>loadSrc outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = RedefinitionNotification handlerBlock = BlockClosure [] in [] in Store.Bundle>>loadSrc Context PC = 18 ---------------------------------------------------------------------- optimized [] in Store.Bundle>>loadSrc Receiver: an UndefinedObject Temporaries: .self = {'SmallWiki Examples'-'0.9.26'-10312} imgBundle = nil .leafNames = an OrderedCollection[7] Context PC = 15 ---------------------------------------------------------------------- optimized [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil Context PC = 5 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[2] Arguments: aBlock = BlockClosure [] in Cursor>>showWhile: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Cursor>>showWhile: Receiver: a Cursor Instance Variables: errorCode = 0 handle = 36 image = Depth1Image(extent: 16 at 16 depth: 1) mask = Depth1Image(extent: 16 at 16 depth: 1) hotSpot = 0 at 0 name = 'wait' Arguments: aBlock = BlockClosure [] in [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Temporaries: oldcursor = Cursor normal Context PC = 23 ---------------------------------------------------------------------- optimized [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = IncrementNotification handlerBlock = BlockClosure [] in [] in [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 18 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: anExceptionSelector = MessageNotification handlerBlock = BlockClosure [] in [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 18 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: anExceptionSelector = ResetIncrementNotification handlerBlock = BlockClosure [] in [] in Notice class>>showNotice:complete:while:title: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Notice class>>showNotice:complete:while:title: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in Store.Bundle>>loadSrc increment = 0.00581395 res = nil newValue = nil .noticeModel = a Notice .progress = a ValueHolder on: 0.0 .title = 'Store : <1s>%% done' Context PC = 21 ---------------------------------------------------------------------- BlockClosure>>ensure: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in Notice class>>showNotice:complete:while:title: outerContext = nil copiedValues = an Array[5] Arguments: aBlock = BlockClosure [] in Notice class>>showNotice:complete:while:title: Temporaries: result = nil Context PC = 4 ---------------------------------------------------------------------- Notice class>>showNotice:complete:while:title: Receiver: a Notice class Instance Variables: superclass = ApplicationModel methodDict = a MethodDictionary[9] format = 16390 subclasses = nil instanceVariables = an Array[2] organization = ('interface opening' #postOpenWith:) ('aspects' #message: #notice #show: #textView) ('updating' #changedMessages) ('private' #invokePostOpen #on:) ('interface closing' #requestForWindowClose) name = #Notice classPool = a NameSpaceOfClass[0] environment = a NameSpace[560] savedWindowInformation = an IdentityDictionary[0] Arguments: aString = 'Loading SmallWiki Examples(0.9.26,lukas)' anInteger = 172 aBlock = BlockClosure [] in Store.Bundle>>loadSrc titleString = 'Store' Temporaries: noticeModel = a Notice int = 172 increment = 0.00581395 progress = a ValueHolder on: 0.0 res = nil title = 'Store : <1s>%% done' newValue = nil Context PC = 125 ---------------------------------------------------------------------- Store.Bundle>>loadSrc Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Temporaries: imgBundle = nil leafNames = an OrderedCollection[7] Context PC = 30 ---------------------------------------------------------------------- Store.Bundle(Store.Pundle)>>loadSrcWithImgPundle: Receiver: a Store.Bundle Instance Variables: primaryKey = 10312 name = 'SmallWiki Examples' timeStamp = 342584266 version = '0.9.26' userName = 'lukas' trace = 9469 dbIdentifier = #psql_public_cst blessingLevel = 20 commentID = 0 propertiesID = 966265 properties = an IdentityDictionary[3] commentStr = nil vanguardID = nil rearguardID = nil vanguardStr = nil rearguardStr = nil contents = a List[7] Arguments: imgPundle = {SmallWiki Examples} Context PC = 35 ---------------------------------------------------------------------- [] in Store.VersionBrowser(Store.AbstractTool)>>loadPundle Receiver: a Store.VersionBrowser Instance Variables: dependents = nil builder = an UIBuilder uiSession = nil eventHandlers = nil versions = a MultiSelectionInList pundles = an OrderedCollection[1] labels = a Dictionary[18] offsets = an Array[3] comment = a ValueHolder on: '--- Blessed: Development --- By: lukas --- On: 06/24/2004 2:37:38.000 ' Arguments: pundle = {'SmallWiki Examples'-'0.9.26'-10312} Temporaries: imgPundle = {SmallWiki Examples} .msg = '<1s> is not linked to the cur...>Do you want to do that now?' .self = a Store.VersionBrowser Context PC = 76 ---------------------------------------------------------------------- OrderedCollection>>do: Receiver: an OrderedCollection Instance Variables: firstIndex = 1 lastIndex = 1 Arguments: aBlock = BlockClosure [] in Store.AbstractTool>>loadPundle Temporaries: index = 1 Context PC = 17 ---------------------------------------------------------------------- Store.VersionBrowser(Store.AbstractTool)>>loadPundle Receiver: a Store.VersionBrowser Instance Variables: dependents = nil builder = an UIBuilder uiSession = nil eventHandlers = nil versions = a MultiSelectionInList pundles = an OrderedCollection[1] labels = a Dictionary[18] offsets = an Array[3] comment = a ValueHolder on: '--- Blessed: Development --- By: lukas --- On: 06/24/2004 2:37:38.000 ' Temporaries: msg = '<1s> is not linked to the cur...>Do you want to do that now?' imgPundle = {SmallWiki Examples} Context PC = 17 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>dispatchMenuSymbol: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: menuSelection = #loadPundle Context PC = 7 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>dispatchMenuSelection: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: menuSelection = #loadPundle Context PC = 14 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>processMenu:at:centered: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: aMenu = a Menu aPoint = 823 at 245 centered = true Temporaries: valueResult = a MenuItem 'Load' Context PC = 41 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>processMenuAt:centered: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: aPoint = 823 at 245 centered = true Context PC = 9 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>yellowButtonPressedEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: event = a YellowButtonPressedEvent Context PC = 13 ---------------------------------------------------------------------- Store.MultiSequenceController(SequenceController)>>yellowButtonPressedEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: event = a YellowButtonPressedEvent Context PC = 19 ---------------------------------------------------------------------- YellowButtonPressedEvent>>dispatchTo: Receiver: a YellowButtonPressedEvent Instance Variables: time = 8827625 initiator = an EventDispatcher window = an ApplicationWindow 182 state = 2 x = 286 y = 72 gx = 823 gy = 245 buttonNumber = 2 Arguments: anObject = a Store.MultiSequenceController Context PC = 4 ---------------------------------------------------------------------- Store.MultiSequenceController(ControllerWithMenu)>>handleEvent: Receiver: a Store.MultiSequenceController Instance Variables: model = a ValueHolder on: List ({SmallWiki Examples} {'SmallWiki Examples'-'0.9.26'-10312} {'SmallWiki Examples'-'0.9.25'-9469} {'SmallWiki Examples'-'0.9.24'-8928} {'SmallWiki Examples'-'0.9.23'-8824} {'SmallWiki Examples'-'0.9.22'-8704} {'SmallWiki Examples'-'0.9.21'-8611} {'SmallWiki Examples'-'0.9.20'-8602} {'SmallWiki Examples'-'0.9.19'-8371} {'SmallWiki Examples'-'0.9.18'-8261} {'SmallWiki Examples'-'0.9.17'-8238} {'SmallWiki Examples'-'0.9.16'-8123} {'SmallWiki Examples'-'0.9.15'-8117} {'SmallWiki Examples'-'0.9.14'-7873} {'SmallWiki Examples'-'0.9.6'-7760} {'SmallWiki Examples'-'0.9.5'-7348} {'SmallWiki Examples'-'0.9.2'-6750} {'SmallWiki Examples'-'0.9.1'-6731}) view = a MultiSelectionSequenceView sensor = a TranslatingSensor menuHolder = a Menu performer = a Store.VersionBrowser keyboardProcessor = a KeyboardProcessor outside = false searchString = nil keyboardHook = nil doStringSearching = true dispatcher = an UIDispatcher dragDropCallbacks = nil selectOnDownWithDrag = false autoSelect = nil Arguments: anEvent = a YellowButtonPressedEvent Context PC = 33 ---------------------------------------------------------------------- EventDispatcher>>dispatch:to: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a Store.MultiSequenceController trapList = nil state = #debugging repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a YellowButtonPressedEvent object = a Store.MultiSequenceController Temporaries: tmp = nil Context PC = 10 ---------------------------------------------------------------------- EventDispatcher>>dispatchEvent: Receiver: an EventDispatcher Instance Variables: windowController = an ApplicationStandardSystemController currentMouseConsumer = nil grabbingMouse = false keyboardProcessor = a KeyboardProcessor lastControlObject = a Store.MultiSequenceController trapList = nil state = #debugging repairDamageWhenDebugging = true flushQueueAfterError = true distributeEventsWhenDebugging = true dragDropInProgress = false dragDropTracker = nil dispatchUnknownEvents = false Arguments: event = a YellowButtonPressedEvent Temporaries: objectWantingControl = a Store.MultiSequenceController targetKeyboardProcessor = nil Context PC = 113 ---------------------------------------------------------------------- YellowButtonPressedEvent(Event)>>dispatch Receiver: a YellowButtonPressedEvent Instance Variables: time = 8827625 initiator = an EventDispatcher window = an ApplicationWindow 182 state = 2 x = 286 y = 72 gx = 823 gy = 245 buttonNumber = 2 Context PC = 16 ---------------------------------------------------------------------- YellowButtonPressedEvent(Event)>>dispatchForWindowManager: Receiver: a YellowButtonPressedEvent Instance Variables: time = 8827625 initiator = an EventDispatcher window = an ApplicationWindow 182 state = 2 x = 286 y = 72 gx = 823 gy = 245 buttonNumber = 2 Arguments: aWinMgr = a WindowManager Context PC = 4 ---------------------------------------------------------------------- optimized [] in WindowManager>>safelyDispatchForWindowManager: Receiver: an UndefinedObject Temporaries: .event = a YellowButtonPressedEvent .self = a WindowManager Context PC = 6 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>safelyDispatchForWindowManager: outerContext = nil copiedValues = an Array[2] Arguments: anExceptionSelector = BadControllerError handlerBlock = BlockClosure [] in WindowManager>>safelyDispatchForWindowManager: Context PC = 18 ---------------------------------------------------------------------- WindowManager>>safelyDispatchForWindowManager: Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[2] activeController = an ApplicationStandardSystemController interruptLock = false outstandingMetaOrDamage = false modalWindowChain = nil openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Arguments: event = a YellowButtonPressedEvent Context PC = 13 ---------------------------------------------------------------------- WindowManager>>processNextEvent Receiver: a WindowManager Instance Variables: windows = an OrderedCollection[2] activeController = an ApplicationStandardSystemController interruptLock = false outstandingMetaOrDamage = false modalWindowChain = nil openInProgress = false eventQueue = an EventQueue baseProcess = a Process in Semaphore>>wait dontFilterEvents = false Temporaries: event = a YellowButtonPressedEvent Context PC = 12 ---------------------------------------------------------------------- optimized [] in [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 13 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in WindowManager>>newProcess Context PC = 18 ---------------------------------------------------------------------- optimized [] in WindowManager>>newProcess Receiver: an UndefinedObject Temporaries: .self = a WindowManager Context PC = 15 ---------------------------------------------------------------------- BlockClosure>>on:do: Receiver: a BlockClosure Instance Variables: method = CompiledBlock [] in WindowManager>>newProcess outerContext = nil copiedValues = a WindowManager Arguments: anExceptionSelector = TerminateException handlerBlock = BlockClosure [] in [] in Process class>>forBlock:priority: Context PC = 18 ---------------------------------------------------------------------- optimized [] in Process class>>forBlock:priority: Receiver: an UndefinedObject Temporaries: .aBlock = BlockClosure [] in WindowManager>>newProcess Context PC = 9 -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From renggli at iam.unibe.ch Mon Jul 19 17:58:09 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 19 Jul 2004 17:58:09 +0200 Subject: [SW2] First Commit to Cincom Public StORE Message-ID: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> Hi everybody, I published a first version of SmallWiki 2 to Cincom Public StORE (SmallWiki2, 1.12, renggli). I hope it loads without troubles :/ Don't expect much! And *don't use it on your production server*, the model might still change and I won't care about backward compatibility before reaching the final 2.0 version! Some of the consideration of the new implementation: - the model is completely separated from the view: e.g. there is a view based on Seaside and for demonstration purposes a very simple and buggy one on the trippy-inspector framework. - the model of the structure has been refined to allow better versioning, external storage, etc. - even better extensibility ;) - the model of the document and the parser has been improved to allow a more generic use of the entities: smilies, code are now possible within headings and links; links are now possible within headings, etc. - the parser tests have been improved and all the production rules are covered now. - the old model is easily transformable into the new one by writing a visitor (not proven yet, but I expect it to be very easy). I'm looking for any comments and feedback on the new implementation. I'm looking for people as well that are willing to help and/or comment in the following areas: - Improving the model. - Writing more tests. - Improving the Renderers: e.g. error-checking, more functionality, better user experience, etc. creating a nice userinterface. - Finish the existing but incomplete and add more subclasses to WikiComponent. Currently most of them are empty classes without any useful functunatliy. - Improving the trippy-inspector wiki, that is nice to use but currently badly implemented. - A SmallWiki 1 to SmallWiki 2 model convertor. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From renggli at iam.unibe.ch Mon Jul 19 18:07:19 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 19 Jul 2004 18:07:19 +0200 Subject: Here is the copy stack for bug when loading examples In-Reply-To: References: Message-ID: > Please let me know when this has been addressed, I am eager to check > out what is there as far as extensions. Okay, I removed the version requirement, but I'm not sure if all the extensions still work with the latest version of SmallWiki 1. The few examples in this bundle are not suggested to use in a production environment anyway. A lot more extensions have been made at the University of Bern and Brussels during Smalltalk/Software Development courses, but these are currently not accessible from public, as far as I know. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From ducasse at iam.unibe.ch Mon Jul 19 18:42:17 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Mon, 19 Jul 2004 18:42:17 +0200 Subject: [SW2] First Commit to Cincom Public StORE In-Reply-To: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> Message-ID: <987CA3DC-D9A2-11D8-A539-000A9573EAE2@iam.unibe.ch> Thanks lukas... I will try to help. Stef On 19 juil. 04, at 17:58, Lukas Renggli wrote: > Hi everybody, > > I published a first version of SmallWiki 2 to Cincom Public StORE > (SmallWiki2, 1.12, renggli). I hope it loads without troubles :/ > > Don't expect much! And *don't use it on your production server*, the > model might still change and I won't care about backward compatibility > before reaching the final 2.0 version! > > Some of the consideration of the new implementation: > > - the model is completely separated from the view: e.g. there is a > view based on Seaside and for demonstration purposes a very simple and > buggy one on the trippy-inspector framework. > > - the model of the structure has been refined to allow better > versioning, external storage, etc. > > - even better extensibility ;) > > - the model of the document and the parser has been improved to allow > a more generic use of the entities: smilies, code are now possible > within headings and links; links are now possible within headings, > etc. > > - the parser tests have been improved and all the production rules are > covered now. > > - the old model is easily transformable into the new one by writing a > visitor (not proven yet, but I expect it to be very easy). > > I'm looking for any comments and feedback on the new implementation. > I'm looking for people as well that are willing to help and/or comment > in the following areas: > > - Improving the model. > > - Writing more tests. > > - Improving the Renderers: e.g. error-checking, more functionality, > better user experience, etc. > creating a nice userinterface. > > - Finish the existing but incomplete and add more subclasses to > WikiComponent. Currently most of them are empty classes without any > useful functunatliy. > > - Improving the trippy-inspector wiki, that is nice to use but > currently badly implemented. > > - A SmallWiki 1 to SmallWiki 2 model convertor. > > Cheers, > Lukas > > -- > Lukas Renggli > http://renggli.freezope.org > From charles at datasof.com Mon Jul 19 19:29:36 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 13:29:36 -0400 Subject: [SW2] First Commit to Cincom Public StORE, load is broken In-Reply-To: <987CA3DC-D9A2-11D8-A539-000A9573EAE2@iam.unibe.ch> References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <987CA3DC-D9A2-11D8-A539-000A9573EAE2@iam.unibe.ch> Message-ID: Attempting to load SmallWiki2 into a virgin VW 7.2 commercial image results in Store popping a Dialog stating that: 'SmaCC(1.3,brant) fails prerequisite test.' if one breaks into the thread and walks back to: Store.BasicPrerequisitePolicy>>> getPrereq: reqName from: pundleList version: reqVersion for: aPundle | pundle | ( pundle := self initialVersionOf: reqName fromList: pundleList version: reqVersion ) == nil ifTrue: [ ^pundle ]. "user cancelled selection" [ ( pundle == nil or: [ aPundle checkPrerequisiteNamed: reqName withVersion: pundle version requiredVersion: reqVersion ] ) ifTrue: [ ^pundle ]. Dialog warn: pundle displayString, ' fails prerequisite test.' . pundle := self selectPrereqVersionOf: reqName fromList: pundleList version: reqVersion. ] repeat. >>>> the comes in as: '1.3Cincom' however there is no such animal from what I can tell loaded into the repository. If it is the latest that is desired it may work out best to not specify a version and let users specify in their settings to auto-load the latest in the case where version is not specified. -Charles On Mon, 19 Jul 2004 18:42:17 +0200, st?phane ducasse wrote: > Thanks lukas... > I will try to help. > > Stef > > On 19 juil. 04, at 17:58, Lukas Renggli wrote: > >> Hi everybody, >> >> I published a first version of SmallWiki 2 to Cincom Public StORE >> (SmallWiki2, 1.12, renggli). I hope it loads without troubles :/ >> >> Don't expect much! And *don't use it on your production server*, the >> model might still change and I won't care about backward compatibility >> before reaching the final 2.0 version! >> >> Some of the consideration of the new implementation: >> >> - the model is completely separated from the view: e.g. there is a view >> based on Seaside and for demonstration purposes a very simple and buggy >> one on the trippy-inspector framework. >> >> - the model of the structure has been refined to allow better >> versioning, external storage, etc. >> >> - even better extensibility ;) >> >> - the model of the document and the parser has been improved to allow a >> more generic use of the entities: smilies, code are now possible within >> headings and links; links are now possible within headings, etc. >> >> - the parser tests have been improved and all the production rules are >> covered now. >> >> - the old model is easily transformable into the new one by writing a >> visitor (not proven yet, but I expect it to be very easy). >> >> I'm looking for any comments and feedback on the new implementation. >> I'm looking for people as well that are willing to help and/or comment >> in the following areas: >> >> - Improving the model. >> >> - Writing more tests. >> >> - Improving the Renderers: e.g. error-checking, more functionality, >> better user experience, etc. >> creating a nice userinterface. >> >> - Finish the existing but incomplete and add more subclasses to >> WikiComponent. Currently most of them are empty classes without any >> useful functunatliy. >> >> - Improving the trippy-inspector wiki, that is nice to use but >> currently badly implemented. >> >> - A SmallWiki 1 to SmallWiki 2 model convertor. >> >> Cheers, >> Lukas >> >> -- Lukas Renggli >> http://renggli.freezope.org >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Mon Jul 19 19:29:36 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 13:29:36 -0400 Subject: [SW2] First Commit to Cincom Public StORE, load is broken In-Reply-To: <987CA3DC-D9A2-11D8-A539-000A9573EAE2@iam.unibe.ch> References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <987CA3DC-D9A2-11D8-A539-000A9573EAE2@iam.unibe.ch> Message-ID: Attempting to load SmallWiki2 into a virgin VW 7.2 commercial image results in Store popping a Dialog stating that: 'SmaCC(1.3,brant) fails prerequisite test.' if one breaks into the thread and walks back to: Store.BasicPrerequisitePolicy>>> getPrereq: reqName from: pundleList version: reqVersion for: aPundle | pundle | ( pundle := self initialVersionOf: reqName fromList: pundleList version: reqVersion ) == nil ifTrue: [ ^pundle ]. "user cancelled selection" [ ( pundle == nil or: [ aPundle checkPrerequisiteNamed: reqName withVersion: pundle version requiredVersion: reqVersion ] ) ifTrue: [ ^pundle ]. Dialog warn: pundle displayString, ' fails prerequisite test.' . pundle := self selectPrereqVersionOf: reqName fromList: pundleList version: reqVersion. ] repeat. >>>> the comes in as: '1.3Cincom' however there is no such animal from what I can tell loaded into the repository. If it is the latest that is desired it may work out best to not specify a version and let users specify in their settings to auto-load the latest in the case where version is not specified. -Charles On Mon, 19 Jul 2004 18:42:17 +0200, st?phane ducasse wrote: > Thanks lukas... > I will try to help. > > Stef > > On 19 juil. 04, at 17:58, Lukas Renggli wrote: > >> Hi everybody, >> >> I published a first version of SmallWiki 2 to Cincom Public StORE >> (SmallWiki2, 1.12, renggli). I hope it loads without troubles :/ >> >> Don't expect much! And *don't use it on your production server*, the >> model might still change and I won't care about backward compatibility >> before reaching the final 2.0 version! >> >> Some of the consideration of the new implementation: >> >> - the model is completely separated from the view: e.g. there is a view >> based on Seaside and for demonstration purposes a very simple and buggy >> one on the trippy-inspector framework. >> >> - the model of the structure has been refined to allow better >> versioning, external storage, etc. >> >> - even better extensibility ;) >> >> - the model of the document and the parser has been improved to allow a >> more generic use of the entities: smilies, code are now possible within >> headings and links; links are now possible within headings, etc. >> >> - the parser tests have been improved and all the production rules are >> covered now. >> >> - the old model is easily transformable into the new one by writing a >> visitor (not proven yet, but I expect it to be very easy). >> >> I'm looking for any comments and feedback on the new implementation. >> I'm looking for people as well that are willing to help and/or comment >> in the following areas: >> >> - Improving the model. >> >> - Writing more tests. >> >> - Improving the Renderers: e.g. error-checking, more functionality, >> better user experience, etc. >> creating a nice userinterface. >> >> - Finish the existing but incomplete and add more subclasses to >> WikiComponent. Currently most of them are empty classes without any >> useful functunatliy. >> >> - Improving the trippy-inspector wiki, that is nice to use but >> currently badly implemented. >> >> - A SmallWiki 1 to SmallWiki 2 model convertor. >> >> Cheers, >> Lukas >> >> -- Lukas Renggli >> http://renggli.freezope.org >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From charles at datasof.com Mon Jul 19 19:30:17 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 19 Jul 2004 13:30:17 -0400 Subject: Here is the copy stack for bug when loading examples In-Reply-To: References: Message-ID: It loads fine, though. On Mon, 19 Jul 2004 18:07:19 +0200, Lukas Renggli wrote: >> Please let me know when this has been addressed, I am eager to check >> out what is there as far as extensions. > > Okay, I removed the version requirement, but I'm not sure if all the > extensions still work with the latest version of SmallWiki 1. > > The few examples in this bundle are not suggested to use in a production > environment anyway. A lot more extensions have been made at the > University of Bern and Brussels during Smalltalk/Software Development > courses, but these are currently not accessible from public, as far as I > know. > > Cheers, > Lukas > -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From davidroe at bluewin.ch Tue Jul 20 12:09:02 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Tue, 20 Jul 2004 12:09:02 +0200 Subject: [SW2] First Commit to Cincom Public StORE References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> Message-ID: <016501c46e41$9b584740$667ba8c0@DAVID1> Hello Lukas, > I'm looking for any comments and feedback on the new implementation. yes, the improvements on the parser are really great, now it's possible to customize the smilie acronyms without touching the scanner or parser, for example. And also in the model I can find a lot of improvement compared to SW1, nice. :) > - Improving the Renderers: e.g. error-checking, more functionality, > better user experience, etc. > creating a nice userinterface. > > - Finish the existing but incomplete and add more subclasses to > WikiComponent. Currently most of them are empty classes without any > useful functunatliy. So I try to work on the renderers and components during this week, as much as possible. Then I have a question to the message Session>>goTo: aModel: There you set a new model (and renderer) to the session, so a new model is rendered with a new renderer, when a user clicks on a link. That works perfectly if the model has the same url as the page where this link was into. For instance, when I'm on http://localhost:8080/page1, then the Edit or History links works well. But what is when there's an internal link in the wiki, for instance a link to page3, which would be accessible under the url http://localhost:8080/folder2/page3? Then I try to goTo the model of page3, but the request has still the url of page1, so I can't resolve the structure of page3 from the url of the request, but I will goTo again to page1 (as defined in message Session>>initializeModel, because the resolved structure is not the same as the structure in model). We could change initializeModel to not resolve the url, but then there won't be these clear urls like in SW1 anymore. And I think you want to have these urls with the titles of a page in, even when SW is under Seaside now, I guess? So I'm wondering how to achieve that, to have these fine urls when using Seaside. It's not possible to simply redirect to the url of a structure as in SW1, because the Seaside session would be lost then. kind regards, David From johnson at cs.uiuc.edu Wed Jul 21 00:36:20 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Tue, 20 Jul 2004 17:36:20 -0500 Subject: Status and question from Camp Smalltalk Message-ID: There are half a dozen of us here working on SmallWiki. We spent yesterday working only with the old version, but a couple of people are going to start looking at the new version today. We have been mostly focusing on persistence, and have made good progress. We are using the "Prevaylor pattern", though of course Smalltalker have done this long before Java was invented. We are basically keeping a change log so that we can recover from a crash by restarting the last saved image and replaying the log. That is not quite complete yet. We also store resources in the file system, not the image. That is complete. With the old version, we often found that an action would produce a blank page. For example, logging in usually did this, and sometimes editing a page or resource would do this. We are hoping that the new version will fix this. Is it a known problem with the old version? -Ralph Johnson From davidroe at bluewin.ch Wed Jul 21 00:51:13 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Wed, 21 Jul 2004 00:51:13 +0200 Subject: Status and question from Camp Smalltalk References: Message-ID: <01d601c46eac$138e4e20$667ba8c0@DAVID1> > With the old version, we often found that an action would produce a blank > page. For example, logging in usually did this, and sometimes editing a > page or resource would do this. We are hoping that the new version will fix > this. Is it a known problem with the old version? Which browser do you use? I have encountered this problem only with some browsers in the past, for instance with Internet Explorer. I have never seen that using Mozilla or Opera, so it seems to be a problem of IE, may be related with Swazoo. With Seaside behind, this problem shouldn't exist anymore, at least I ve never seen it again, no matter which browser I use. greets, David From johnson at cs.uiuc.edu Wed Jul 21 02:18:10 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Tue, 20 Jul 2004 19:18:10 -0500 Subject: Security for SmallWiki Message-ID: I'd like to have a folder for a particular course. Inside this folder is another folder called "students", and inside this folder is a folder for every student in the class. Let's say there are 40 students in the class, so 40 folders in "students". I want to give each student the ability to administrate his folder, and to keep other students from reading files. It appears to me that the only way to do this is to create 40 roles, one for each student, and to say that role N can administer folder N. This is because roles are defined relative to structures, but users are global. What I'd really like to do is to define a role "owner" and to say that user N has role "owneer" inside folder N, but not in any other folders. However, I don't think this is possible. Any comments? Do I really have to create 40 roles? I suppose I can make an admin action to do this. -Ralph Johnson From johnson at cs.uiuc.edu Wed Jul 21 07:13:43 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Wed, 21 Jul 2004 00:13:43 -0500 Subject: Design questions Message-ID: We spent a day at Camp Smalltalk working with the old version of SmallWiki and have been spending some time with the new one. In the old one, Folder was a subclass of Page. This was reasonable. In the new one, Page is a subclass of Folder, and this seems wrong. It looks like Folder is never used, and all Pages can be Folders. The worst part of the old SmallWiki was the callbacks. They are a horrible design, virtually impossible to understand. I had hoped that the Seaside version would fix them, but it didn't. Actions went away, and they weren't that bad, aside from the callbacks. So, tell us why the Seaside version is an improvement? In my opinion, it is a big step backward. One of the bad features of the Seaside version is that actions are performed in the user interface, not in the model. For example, a page is edited in the #save version of EditRenderer, but in the accept (or maybe document:) method of DocumentEditor. It looks like DocumentEditor does not create history, so the trippy interface does something different from the Seaside interface. This bug is due partly to bad design. There should be a single place where documents are edited, like an Action. The model should change the model. We got an error in the new SmallWiki whenever we tried to put a new link on a page. Is there a newer version? -Ralph Johnson From renggli at iam.unibe.ch Wed Jul 21 14:07:13 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Wed, 21 Jul 2004 14:07:13 +0200 Subject: Design questions In-Reply-To: References: Message-ID: <80093B4F-DB0E-11D8-9892-000393CFE6C8@iam.unibe.ch> Hi, thanks for the valuable feedback! > In the old one, Folder was a subclass of Page. This was reasonable. > In the > new one, Page is a subclass of Folder, and this seems wrong. It looks > like > Folder is never used, and all Pages can be Folders. I decided not to support pages anymore, as people didn't understand the difference between Pages and Folder. Now the idea is, that all the Pages can potentially have children. > The worst part of the old SmallWiki was the callbacks. They are a > horrible > design, virtually impossible to understand. I had hoped that the > Seaside > version would fix them, but it didn't. Actions went away, and they > weren't > that bad, aside from the callbacks. So, tell us why the Seaside > version is > an improvement? In my opinion, it is a big step backward. In my opinion callbacks are great. They make a huge improvement of the abstraction over the dumb and error prone HTTP-protocol: basically they remove all the manual handling of request and response fields. Seaside provides a lot of functionality in a much better tested and designed manner, that I implemented on my own in SmallWiki 1. The possibility to have state in components make a big improvement over the old SmallWiki implementation, e.g. see the interface to edit resources (something like this would have been almost impossible with SmallWiki 1). > One of the bad features of the Seaside version is that actions are > performed > in the user interface, not in the model. For example, a page is > edited in > the #save version of EditRenderer, but in the accept (or maybe > document:) > method of DocumentEditor. I don't understand. What I want is a separation of the model (SmallWiki-Model), the controller (SmallWiki2-Seaside) and View (SmallWiki2-Seaside). Eventually more code from the controller part should be moved to the model. > It looks like DocumentEditor does not create history, so the > trippy interface does something different from the Seaside > interface. The trippy interface was just a test of the model. It isn't complete at all and I didn't update it anymore since working on the seaside interface. > This bug is due partly to bad design. There should be a single > place where documents are edited, like an Action. The model should > change the model. Yes, I see. I will try to move more of the controller code to the model. But unfortunately my time is very very limited. So don't expect changes soon. > We got an error in the new SmallWiki whenever we tried to put a new > link on a page. Is there a newer version? The link functionality is currently not implemented. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From renggli at iam.unibe.ch Wed Jul 21 14:07:13 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Wed, 21 Jul 2004 14:07:13 +0200 Subject: Design questions In-Reply-To: References: Message-ID: <80093B4F-DB0E-11D8-9892-000393CFE6C8@iam.unibe.ch> Hi, thanks for the valuable feedback! > In the old one, Folder was a subclass of Page. This was reasonable. > In the > new one, Page is a subclass of Folder, and this seems wrong. It looks > like > Folder is never used, and all Pages can be Folders. I decided not to support pages anymore, as people didn't understand the difference between Pages and Folder. Now the idea is, that all the Pages can potentially have children. > The worst part of the old SmallWiki was the callbacks. They are a > horrible > design, virtually impossible to understand. I had hoped that the > Seaside > version would fix them, but it didn't. Actions went away, and they > weren't > that bad, aside from the callbacks. So, tell us why the Seaside > version is > an improvement? In my opinion, it is a big step backward. In my opinion callbacks are great. They make a huge improvement of the abstraction over the dumb and error prone HTTP-protocol: basically they remove all the manual handling of request and response fields. Seaside provides a lot of functionality in a much better tested and designed manner, that I implemented on my own in SmallWiki 1. The possibility to have state in components make a big improvement over the old SmallWiki implementation, e.g. see the interface to edit resources (something like this would have been almost impossible with SmallWiki 1). > One of the bad features of the Seaside version is that actions are > performed > in the user interface, not in the model. For example, a page is > edited in > the #save version of EditRenderer, but in the accept (or maybe > document:) > method of DocumentEditor. I don't understand. What I want is a separation of the model (SmallWiki-Model), the controller (SmallWiki2-Seaside) and View (SmallWiki2-Seaside). Eventually more code from the controller part should be moved to the model. > It looks like DocumentEditor does not create history, so the > trippy interface does something different from the Seaside > interface. The trippy interface was just a test of the model. It isn't complete at all and I didn't update it anymore since working on the seaside interface. > This bug is due partly to bad design. There should be a single > place where documents are edited, like an Action. The model should > change the model. Yes, I see. I will try to move more of the controller code to the model. But unfortunately my time is very very limited. So don't expect changes soon. > We got an error in the new SmallWiki whenever we tried to put a new > link on a page. Is there a newer version? The link functionality is currently not implemented. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From charles at datasof.com Wed Jul 21 16:45:08 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Wed, 21 Jul 2004 10:45:08 -0400 Subject: clear text passwords Message-ID: Talking about security, it would be nice not to have unecrypted passwords fly into the wiki. I noticed that Swazoo has apparently support for SSL i.e https. Therefore, I was wondering if it is feasible to run the wiki under https or to at least login into the wiki via https and once the user is authenticated to re-direct to the normal wiki. My main concern is just the clear text passwords. Of course, the next question is does Seaside have any support for https? thanks Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From renggli at iam.unibe.ch Wed Jul 21 19:03:53 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Wed, 21 Jul 2004 19:03:53 +0200 Subject: [SW2] First Commit to Cincom Public StORE In-Reply-To: <016501c46e41$9b584740$667ba8c0@DAVID1> References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <016501c46e41$9b584740$667ba8c0@DAVID1> Message-ID: Hi David, > So I try to work on the renderers and components during this week, as > much as possible. Great! > Then I have a question to the message Session>>goTo: aModel: There you > set a > new model (and renderer) to the session, so a new model is rendered > with a > new renderer, when a user clicks on a link. That works perfectly if the > model has the same url as the page where this link was into. For > instance, > when I'm on http://localhost:8080/page1, then the Edit or History links > works well. But what is when there's an internal link in the wiki, for > instance a link to page3, which would be accessible under the url > http://localhost:8080/folder2/page3? Then I try to goTo the model of > page3, > but the request has still the url of page1, so I can't resolve the > structure > of page3 from the url of the request, but I will goTo again to page1 > (as > defined in message Session>>initializeModel, because the resolved > structure > is not the same as the structure in model). Mhh, I do not get this? As far as I understand you concern isn't a problem, as Seaside is doing a redirect to the correct path after every link/submit anyway. Actually this is the standard behavior of Seaside and has some other advantages, like a nicer behavior of the application when using the back-button in the web-browser. > We could change initializeModel to not resolve the url, but then there > won't > be these clear urls like in SW1 anymore. And I think you want to have > these > urls with the titles of a page in, even when SW is under Seaside now, I > guess? Yes, readable and bookmark-able URL are a requirement. > So I'm wondering how to achieve that, to have these fine urls when > using > Seaside. It's not possible to simply redirect to the url of a > structure as > in SW1, because the Seaside session would be lost then. Have a look at the class SmallWiki2.TreeComponent, one of the few components that is fully working already. I think, it is showing some of the power of Seaside in a very nice way: the links to the structure there are defined as action callbacks html anchorWithAction: [ self session goTo: aModel ] do: aModel title and Seaside takes care of updating the url and keeping the session. Another nice thing to see in this example - but not related to your question - is how the state of the component is kept, e.g. what nodes of the tree are collapsed/expanded. In SmallWiki 1 this would have been extremely difficult involving the use of ugly HTTP-stuff like cookies and it would have been impossible to have two such components on the same page. In SmallWiki 2 you can get this with just a few lines of code. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From renggli at iam.unibe.ch Wed Jul 21 19:03:53 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Wed, 21 Jul 2004 19:03:53 +0200 Subject: [SW2] First Commit to Cincom Public StORE In-Reply-To: <016501c46e41$9b584740$667ba8c0@DAVID1> References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <016501c46e41$9b584740$667ba8c0@DAVID1> Message-ID: Hi David, > So I try to work on the renderers and components during this week, as > much as possible. Great! > Then I have a question to the message Session>>goTo: aModel: There you > set a > new model (and renderer) to the session, so a new model is rendered > with a > new renderer, when a user clicks on a link. That works perfectly if the > model has the same url as the page where this link was into. For > instance, > when I'm on http://localhost:8080/page1, then the Edit or History links > works well. But what is when there's an internal link in the wiki, for > instance a link to page3, which would be accessible under the url > http://localhost:8080/folder2/page3? Then I try to goTo the model of > page3, > but the request has still the url of page1, so I can't resolve the > structure > of page3 from the url of the request, but I will goTo again to page1 > (as > defined in message Session>>initializeModel, because the resolved > structure > is not the same as the structure in model). Mhh, I do not get this? As far as I understand you concern isn't a problem, as Seaside is doing a redirect to the correct path after every link/submit anyway. Actually this is the standard behavior of Seaside and has some other advantages, like a nicer behavior of the application when using the back-button in the web-browser. > We could change initializeModel to not resolve the url, but then there > won't > be these clear urls like in SW1 anymore. And I think you want to have > these > urls with the titles of a page in, even when SW is under Seaside now, I > guess? Yes, readable and bookmark-able URL are a requirement. > So I'm wondering how to achieve that, to have these fine urls when > using > Seaside. It's not possible to simply redirect to the url of a > structure as > in SW1, because the Seaside session would be lost then. Have a look at the class SmallWiki2.TreeComponent, one of the few components that is fully working already. I think, it is showing some of the power of Seaside in a very nice way: the links to the structure there are defined as action callbacks html anchorWithAction: [ self session goTo: aModel ] do: aModel title and Seaside takes care of updating the url and keeping the session. Another nice thing to see in this example - but not related to your question - is how the state of the component is kept, e.g. what nodes of the tree are collapsed/expanded. In SmallWiki 1 this would have been extremely difficult involving the use of ugly HTTP-stuff like cookies and it would have been impossible to have two such components on the same page. In SmallWiki 2 you can get this with just a few lines of code. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From ducasse at iam.unibe.ch Wed Jul 21 20:07:03 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Wed, 21 Jul 2004 20:07:03 +0200 Subject: [SW2] First Commit to Cincom Public StORE In-Reply-To: References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <016501c46e41$9b584740$667ba8c0@DAVID1> Message-ID: Hi lukas This afternoon and morning too in fact, we got a good design discussion with frederic about the query engine. He is making progress. Then looking at some classes I realized that what is was doing is a kind of wizard to offer to the user a coherent query (i.e. you can only get certain combox choices depending on other choices, a kind of flow). I thought that in seaside this would be ***much*** simpler. So we are eager to get a first version of SmallWiki 2 because then frederic will be able to develop much better interfaces. So keep going. :) I also showed seaside to michael because he was planning to develop an application for photo gallery using css and I guess that they will look at Seaside :) and may be SmallWiki. :) Stef On 21 juil. 04, at 19:03, Lukas Renggli wrote: > Hi David, > >> So I try to work on the renderers and components during this week, as >> much as possible. > > Great! > >> Then I have a question to the message Session>>goTo: aModel: There >> you set a >> new model (and renderer) to the session, so a new model is rendered >> with a >> new renderer, when a user clicks on a link. That works perfectly if >> the >> model has the same url as the page where this link was into. For >> instance, >> when I'm on http://localhost:8080/page1, then the Edit or History >> links >> works well. But what is when there's an internal link in the wiki, for >> instance a link to page3, which would be accessible under the url >> http://localhost:8080/folder2/page3? Then I try to goTo the model of >> page3, >> but the request has still the url of page1, so I can't resolve the >> structure >> of page3 from the url of the request, but I will goTo again to page1 >> (as >> defined in message Session>>initializeModel, because the resolved >> structure >> is not the same as the structure in model). > > Mhh, I do not get this? As far as I understand you concern isn't a > problem, as Seaside is doing a redirect to the correct path after > every link/submit anyway. Actually this is the standard behavior of > Seaside and has some other advantages, like a nicer behavior of the > application when using the back-button in the web-browser. > >> We could change initializeModel to not resolve the url, but then >> there won't >> be these clear urls like in SW1 anymore. And I think you want to have >> these >> urls with the titles of a page in, even when SW is under Seaside now, >> I >> guess? > > Yes, readable and bookmark-able URL are a requirement. > >> So I'm wondering how to achieve that, to have these fine urls when >> using >> Seaside. It's not possible to simply redirect to the url of a >> structure as >> in SW1, because the Seaside session would be lost then. > > Have a look at the class SmallWiki2.TreeComponent, one of the few > components that is fully working already. I think, it is showing some > of the power of Seaside in a very nice way: the links to the structure > there are defined as action callbacks > > html > anchorWithAction: [ self session goTo: aModel ] > do: aModel title > > and Seaside takes care of updating the url and keeping the session. > > Another nice thing to see in this example - but not related to your > question - is how the state of the component is kept, e.g. what nodes > of the tree are collapsed/expanded. In SmallWiki 1 this would have > been extremely difficult involving the use of ugly HTTP-stuff like > cookies and it would have been impossible to have two such components > on the same page. In SmallWiki 2 you can get this with just a few > lines of code. > > Cheers, > Lukas > > -- > Lukas Renggli > http://renggli.freezope.org > From avi at beta4.com Wed Jul 21 21:06:43 2004 From: avi at beta4.com (Avi Bryant) Date: Wed, 21 Jul 2004 12:06:43 -0700 Subject: clear text passwords In-Reply-To: References: Message-ID: <1AF0FB06-DB49-11D8-B33C-000A95DB7844@beta4.com> On Jul 21, 2004, at 7:45 AM, Charles A. Monteiro wrote: > Talking about security, it would be nice not to have unecrypted > passwords fly into the wiki. I noticed that Swazoo has apparently > support for SSL i.e https. Therefore, I was wondering if it is > feasible to run the wiki under https or to at least login into the > wiki via https and once the user is authenticated to re-direct to the > normal wiki. My main concern is just the clear text passwords. Of > course, the next question is does Seaside have any support for https? There's no explicit support, but if all you need is an encrypted connection (rather than checking client-side certs, for example), it's pretty easy to use stunnel to wrap any HTTP server with HTTPS. See http://www.stunnel.org/ . Cheers, Avi From johnson at cs.uiuc.edu Wed Jul 21 23:05:35 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Wed, 21 Jul 2004 16:05:35 -0500 Subject: Design questions In-Reply-To: <80093B4F-DB0E-11D8-9892-000393CFE6C8@iam.unibe.ch> Message-ID: > In my opinion callbacks are great. They make a huge improvement of the > abstraction over the dumb and error prone HTTP-protocol: basically they > remove all the manual handling of request and response fields. Callbacks make your system impossible to understand. Half a dozen experienced Smalltalkers have been banging our heads against the callbacks for three days. We are trying to find out when to commit an action, and what arguments the action used. Because the request is handled automatically, it is hard (it may be impossible) to intercept the request. Because the callbacks in an action are executed multiple times, it is hard to tell when something important it happening. You are falling into the fallacy that shorter code makes for a simpler system. Callbacks might be easy for you to write, but they are hard for everybody else to read, and in the long run are a bad idea. I would MUCH prefer a completely manual handling of request and response fields. -Ralph Johnson From ducasse at iam.unibe.ch Wed Jul 21 23:44:04 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Wed, 21 Jul 2004 23:44:04 +0200 Subject: Design questions In-Reply-To: References: Message-ID: <15BB0722-DB5F-11D8-BFB2-000A9573EAE2@iam.unibe.ch> Hi ralph Are you talking about the old SmallWiki (one) or the new one with Seaside? Because I can understand that the old one may be difficult to understand since lukas tried to minic seaside wtihout seaside. But now when you read the code of the store shop provided as an example for seaside I do not understand how callbacks would make code difficult to read. When I see the complexity of the code and compare with the one of seaside, I'm puzzled. So can you clarify that point? Thanks On 21 juil. 04, at 23:05, Ralph Johnson wrote: >> In my opinion callbacks are great. They make a huge improvement of the >> abstraction over the dumb and error prone HTTP-protocol: basically >> they >> remove all the manual handling of request and response fields. > > Callbacks make your system impossible to understand. Half a dozen > experienced Smalltalkers have been banging our heads against the > callbacks > for three days. > > We are trying to find out when to commit an action, and what arguments > the > action used. Because the request is handled automatically, it is hard > (it > may be impossible) to intercept the request. Because the callbacks in > an > action are executed multiple times, it is hard to tell when something > important it happening. > > You are falling into the fallacy that shorter code makes for a simpler > system. Callbacks might be easy for you to write, but they are hard > for > everybody else to read, and in the long run are a bad idea. > > I would MUCH prefer a completely manual handling of request and > response > fields. > > -Ralph Johnson > From avi at beta4.com Thu Jul 22 00:44:29 2004 From: avi at beta4.com (Avi Bryant) Date: Wed, 21 Jul 2004 15:44:29 -0700 Subject: Design questions In-Reply-To: References: Message-ID: <86B80DF8-DB67-11D8-B33C-000A95DB7844@beta4.com> On Jul 21, 2004, at 2:05 PM, Ralph Johnson wrote: > We are trying to find out when to commit an action, and what arguments > the > action used. Because the request is handled automatically, it is hard > (it > may be impossible) to intercept the request. Because the callbacks in > an > action are executed multiple times, it is hard to tell when something > important it happening. > > You are falling into the fallacy that shorter code makes for a simpler > system. Callbacks might be easy for you to write, but they are hard > for > everybody else to read, and in the long run are a bad idea. > > I would MUCH prefer a completely manual handling of request and > response > fields. Ralph, I don't know the SmallWiki codebase, so I can't comment on the specifics. But I can certainly speak to trade-offs between manual and automatic request handling. With all due respect, I think you should consider the possibility that the problem is in your design, not Lukas'. IIUC, you're trying to capture modifications to the model, but you're doing this at the controller layer, or even lower: the equivalent to the Sensor in a classic MVC system. Might it not work better if you intercepted the actual messages sent to the model instead? Now, I admit that a simpler (more verbose, harder to maintain) UI architecture would make it easier for you to do the wrong thing here, and intercept at the UI level instead of the model level. By analogy, it would be very easy to create a "prevayler" system for a unix filesystem by capturing all the shell commands and playing them back. It would be much harder, and much less reliable, to capture all the mouse clicks and keystrokes handled by the Mac OS X Finder to do the same tasks, because it processes them "automatically" - which is to say, those events have no semantics out of the context in which they were made. You would probably be very frustrated if you decided you were going to implement a journalled filesystem by capturing and replaying all the UI events sent to the Finder application, but I'm not wholly convinced that it would be the fault of poor design on the part of the Finder. Nor am I convinced that we should all be writing command line tools exclusively, or that we should manually process every mouse click in a GUI application we're writing, on the grounds that it's "easier to read" (though certainly harder to write) that way. I'm not trying to dismiss your concerns - clearly there is a problem here, and I'd like to explore it further. But I thought an alternate point of view might be interesting. Avi From charles at datasof.com Thu Jul 22 15:17:03 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Thu, 22 Jul 2004 09:17:03 -0400 Subject: Design questions In-Reply-To: <15BB0722-DB5F-11D8-BFB2-000A9573EAE2@iam.unibe.ch> References: <15BB0722-DB5F-11D8-BFB2-000A9573EAE2@iam.unibe.ch> Message-ID: Just have to throw in my 2 cents, VisualWave which has been around for years did shield developers from having to deal with request and response fields, yet I don't recall it being that painful to debug/walk thru the guts of Wave. There is a balance between convenience and understandability. Mind you, I have not had a chance to yet walk-thru the code myself but I trust that if six senior Smalltalkers which includes Ralph are having a hard time that there is probably room for improvement :) which brings up the fact that I tried to run the CallbackDemo i.e. as per the instructions on the pdf and got the following: Unhandled exception: BlockClosure [] in Object>>doesNotUnderstand: SmallWiki.HtmlWriteStream(Object)>>doesNotUnderstand: SmallWiki.HtmlWriteStream>>doesNotUnderstand: optimized [] in SmallWiki.CallbackDemo>>renderFormRadioGroup BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: optimized [] in SmallWiki.HtmlWriteStream>>form:action: BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: SmallWiki.HtmlWriteStream>>tag:do:keepTight: SmallWiki.HtmlWriteStream>>tag:do: SmallWiki.HtmlWriteStream>>form: SmallWiki.HtmlWriteStream>>form:action: SmallWiki.CallbackDemo(SmallWiki.Action)>>renderForm: SmallWiki.CallbackDemo>>renderFormRadioGroup SmallWiki.CallbackDemo>>renderForm SmallWiki.CallbackDemo>>renderContent optimized [] in SmallWiki.TemplateBodyContents>>renderBodyWith:on: BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: optimized [] in SmallWiki.TemplateBody>>renderDivFor:on:with: BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: SmallWiki.HtmlWriteStream>>tag:do:keepTight: SmallWiki.HtmlWriteStream>>tag:do: SmallWiki.HtmlWriteStream>>div: SmallWiki.HtmlWriteStream>>divNamed:with: SmallWiki.TemplateBodyContents(SmallWiki.TemplateBody)>>renderDivFor:on:with: SmallWiki.TemplateBodyContents>>renderBodyWith:on: optimized [] in [] in SmallWiki.Action>>renderBody OrderedCollection>>do: optimized [] in SmallWiki.Action>>renderBody BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: SmallWiki.HtmlWriteStream>>tag:do:keepTight: SmallWiki.HtmlWriteStream>>tag:do: SmallWiki.HtmlWriteStream>>div: SmallWiki.HtmlWriteStream>>divNamed:with: SmallWiki.CallbackDemo(SmallWiki.Action)>>renderBody optimized [] in [] in SmallWiki.Action>>render BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: SmallWiki.HtmlWriteStream>>tag:do:keepTight: SmallWiki.HtmlWriteStream>>tag:do: SmallWiki.HtmlWriteStream>>body: optimized [] in SmallWiki.Action>>render BlockClosure>>renderOn: SmallWiki.HtmlWriteStream>>render: SmallWiki.HtmlWriteStream>>tag:do:keepTight: SmallWiki.HtmlWriteStream>>tag:do: SmallWiki.HtmlWriteStream>>html: SmallWiki.CallbackDemo(SmallWiki.Action)>>render SmallWiki.CallbackDemo(SmallWiki.Action)>>execute optimized [] in SmallWiki.Structure>>processAction: BlockClosure>>on:do: SmallWiki.Folder(SmallWiki.Structure)>>processAction: SmallWiki.Folder(SmallWiki.Structure)>>processSelf: SmallWiki.Folder(SmallWiki.Structure)>>process: optimized [] in SmallWiki.Server>>process: BlockClosure>>on:do: SmallWiki.SwazooServer(SmallWiki.Server)>>process: SmallWiki.SwazooSite>>helpResolve: Swazoo.URIResolution>>visitResource: [] in Swazoo.URIResolution>>visitChildrenOf:advancing: OrderedCollection>>do: Swazoo.URIResolution>>visitChildrenOf:advancing: Swazoo.URIResolution>>resolveTransparentComposite: Swazoo.URIResolution>>resolveServerRoot: Swazoo.ServerRootComposite>>helpResolve: Swazoo.URIResolution>>visitResource: Swazoo.URIResolution class>>resolveRequest:startingAt: Swazoo.HTTPServer>>answerTo: optimized [] in Swazoo.HTTPConnection>>getAndDispatchMessages BlockClosure>>on:do: Swazoo.HTTPConnection>>getAndDispatchMessages optimized [] in [] in Swazoo.HTTPConnection>>interact BlockClosure>>on:do: optimized [] in Swazoo.HTTPConnection>>interact BlockClosure>>on:do: optimized [] in Process class>>forBlock:priority: ---------------------------------------------------------------------- SmallWiki.HtmlWriteStream(Object)>>doesNotUnderstand: Receiver: a SmallWiki.HtmlWriteStream Instance Variables: collection = ' wrote: > Hi ralph > > Are you talking about the old SmallWiki (one) or the new one with > Seaside? > Because I can understand that the old one may be difficult to understand > since lukas > tried to minic seaside wtihout seaside. But now when you read the code > of the store shop provided > as an example for seaside I do not understand how callbacks would make > code difficult to read. > > When I see the complexity of the code and compare with the one of > seaside, I'm puzzled. > So can you clarify that point? > > Thanks > > > On 21 juil. 04, at 23:05, Ralph Johnson wrote: > >>> In my opinion callbacks are great. They make a huge improvement of the >>> abstraction over the dumb and error prone HTTP-protocol: basically they >>> remove all the manual handling of request and response fields. >> >> Callbacks make your system impossible to understand. Half a dozen >> experienced Smalltalkers have been banging our heads against the >> callbacks >> for three days. >> >> We are trying to find out when to commit an action, and what arguments >> the >> action used. Because the request is handled automatically, it is hard >> (it >> may be impossible) to intercept the request. Because the callbacks in >> an >> action are executed multiple times, it is hard to tell when something >> important it happening. >> >> You are falling into the fallacy that shorter code makes for a simpler >> system. Callbacks might be easy for you to write, but they are hard for >> everybody else to read, and in the long run are a bad idea. >> >> I would MUCH prefer a completely manual handling of request and response >> fields. >> >> -Ralph Johnson >> -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From johnson at cs.uiuc.edu Sat Jul 24 00:49:46 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Fri, 23 Jul 2004 17:49:46 -0500 Subject: Camp Smalltalk results In-Reply-To: <15BB0722-DB5F-11D8-BFB2-000A9573EAE2@iam.unibe.ch> Message-ID: We looked at the Seaside version of SmallWiki and decided it did not work well enough. We were adding security features. Since security depends on Actions, and since the Seaside version didn't have Actions, it seemed like it would not be a good base for work. Links don't work. I imagine lots of other things wouldn't work, but that was enough to persuade me to keep working with the older version. The main problem with the old version is that Actions are a mixture of Commands (a model idea) and GUI. We tried for several days to treat Actions like real Commands and to write them out to a log, but we eventually gave up on that and instead used the Storage system to create a log. I know several things wrong with our current implementation, but we can fix them with enough work. Life would have been much easier if Actions had been only commands and we could have written them to a log and then restored them to recover the log. However, the use of callbacks made that impossible. Callbacks are probably not as bad as I claimed a few days ago. We were trying to do things with Actions that they were not designed to do. However, it is often hard to tell what a framework can do. Normally it is possible to write Commands to a log. It is not possible to write Actions to a log if you intend to execute them after you read them back. We added persistence to SmallWiki by having each page-change write to a log. You can recover from a crash by restarting the latest image and reading the log. We also added a VirtualFolder that allows one user to access a set of pages with a particular name that are in other users folders. I plan to use this in a course I teach. We wrote some actions that will help administer these classes. There are a few more things that need to be done before SmallWiki can replace our WikiWorks server, but we are getting close, and I understand it much better now. Actions are very important. I don't understand why the Seaside version doesn't have it. Probably it is just because it is incomplete. It is a mistake to make page and folder be the same. How can you make new pages without using the component editor? New pages on a page should be in the same folder, new pages on a folder should be inside that folder. What would you do if there were no difference between pages and folders? Seaside will make Actions simpler. However, it is possible to make Actions simpler without Seaside. Callbacks should assign values ONLY to instance variables of Actions. Once the Action is complete, it should be "completed". This would make the behavior of each action easy to understand. They could also be used in logs. It might even be easy to refactor them to be like this. I might look at it next week. -Ralph From ducasse at iam.unibe.ch Sat Jul 24 15:41:57 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sat, 24 Jul 2004 15:41:57 +0200 Subject: Camp Smalltalk results In-Reply-To: References: Message-ID: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> Hi ralph Thanks for your effort and feedback. For the security issues we have an extension of Lukas original model (or UI based on the original model of lukas). You can find the master report of David Vogel on http://kilana.unibe.ch:9090/smallwiki/. Now the problem that we have is that the code is breaking certain parts of SmallWiki and david is not replying to emails (since I guess that he is getting married). So we know that a UI and a better security model is needed (the idea of the new version is that a local admin should not be able to grant more rights than he owns, and that a local admin cannot damage other local admins). But right now we are stuck. We will see how/if this is worth to rescue the code of David Vogel or just to reimplement the idea. We are working on some administration actions: - find all the deadlinks - find all the pages with more than x links... For that Frederic Bulckaen started to introduce the notion of tags and their meta-description and build a simple query engine based on that. The version 2 of Seaside seems to be immature to start to work on it. Normally monday we will have a discussion about it. Stef On 24 juil. 04, at 00:49, Ralph Johnson wrote: > We looked at the Seaside version of SmallWiki and decided it did not > work > well enough. We were adding security features. Since security > depends on > Actions, and since the Seaside version didn't have Actions, it seemed > like > it would not be a good base for work. Links don't work. I imagine > lots of > other things wouldn't work, but that was enough to persuade me to keep > working with the older version. > > The main problem with the old version is that Actions are a mixture of > Commands (a model idea) and GUI. We tried for several days to treat > Actions > like real Commands and to write them out to a log, but we eventually > gave up > on that and instead used the Storage system to create a log. I know > several > things wrong with our current implementation, but we can fix them with > enough work. Life would have been much easier if Actions had been only > commands and we could have written them to a log and then restored > them to > recover the log. However, the use of callbacks made that impossible. > > Callbacks are probably not as bad as I claimed a few days ago. We were > trying to do things with Actions that they were not designed to do. > However, > it is often hard to tell what a framework can do. Normally it is > possible > to write Commands to a log. It is not possible to write Actions to a > log if > you intend to execute them after you read them back. > > We added persistence to SmallWiki by having each page-change write to > a log. > You can recover from a crash by restarting the latest image and > reading the > log. We also added a VirtualFolder that allows one user to access a > set of > pages with a particular name that are in other users folders. I plan > to use > this in a course I teach. We wrote some actions that will help > administer > these classes. There are a few more things that need to be done before > SmallWiki can replace our WikiWorks server, but we are getting close, > and I > understand it much better now. > > Actions are very important. I don't understand why the Seaside version > doesn't have it. Probably it is just because it is incomplete. > > It is a mistake to make page and folder be the same. How can you make > new > pages without using the component editor? New pages on a page should > be in > the same folder, new pages on a folder should be inside that folder. > What > would you do if there were no difference between pages and folders? > > Seaside will make Actions simpler. However, it is possible to make > Actions > simpler without Seaside. Callbacks should assign values ONLY to > instance > variables of Actions. Once the Action is complete, it should be > "completed". This would make the behavior of each action easy to > understand. They could also be used in logs. It might even be easy to > refactor them to be like this. I might look at it next week. > > -Ralph > From ducasse at iam.unibe.ch Sat Jul 24 15:43:05 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sat, 24 Jul 2004 15:43:05 +0200 Subject: Bernish SmallWikiers.... Message-ID: <642BAD60-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> Hi guys lukas was planning to come to present his results about SW2. Lukas what is a good date for you? Stef From michael at squeakland.org Sat Jul 24 17:31:41 2004 From: michael at squeakland.org (Michael Rueger) Date: Sat, 24 Jul 2004 08:31:41 -0700 Subject: Camp Smalltalk results In-Reply-To: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> Message-ID: <410280DD.20507@squeakland.org> Hi St?phane, after using the Squeak version of Smallwiki in a student project (interfacing a Flash client via SOAP for dynamic visualiztions of project history and activity) I agree with Ralph on a lot of the problems he had with the actions design, but it still was way better than trying to work with the old swiki code :-) One thing that really bugs me though is the fact that Smallwiki is maintained in VW. As a company we can not afford to buy VW just to run Smallwiki and instead of spending some of the time I don't have ;-) on porting, I would love to be able to invest that time into development efforts directly. Is there any chance you guys could be persuaded to switch to Squeak? Michael From ducasse at iam.unibe.ch Sat Jul 24 17:49:19 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sat, 24 Jul 2004 17:49:19 +0200 Subject: About running Wiki on VWNC In-Reply-To: <410280DD.20507@squeakland.org> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> Message-ID: <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> Hi michael This is mainly me that prefers SmallWiki in VW because we are also using it for other experiences and teaching. Roel also has lectures using VW. And I'm not teaching using Squeak for multiple reasons but one is that the UI framework is really bad and second I do not want the impression that Smalltalk is childish. We have enough problems not to look strange and ridiculous to use smalltalk not to add more. We also use VW because also Squeak VM are NOT stable on Unix (we had to write a script to check if they are working, imagine). Then we are not making money with SmallWiki so we can use the non-commercial version of VW. I guess that this is the same for you. James will let us know. When we started SW, MC was really in its enfancy. If Squeak would have a better package mechanism and people would be willing to help and they would be in Squeak then why not. Now the point is if people are really willing to help lukas and they prefer Squeak for me I do not care. But right now SmallWiki is a good wiki and we should pay attention to it. Stef > Hi St?phane, > > after using the Squeak version of Smallwiki in a student project > (interfacing a Flash client via SOAP for dynamic visualiztions of > project history and activity) I agree with Ralph on a lot of the > problems he had with the actions design, but it still was way better > than trying to work with the old swiki code :-) I think that lot of the problems will be resolved with SmallWiki 2. But it is also important to provide feedback to lukas and others. So can you be more precise on the problems and how you would solve them? > One thing that really bugs me though is the fact that Smallwiki is > maintained in VW. As a company we can not afford to buy VW just to run > Smallwiki I will ask james about that. James what is the status of cincom on that? Should a company running a wiki pay for VW? I think that this would be a mistake because this could show how stable is the VM. But just let us know. > and instead of spending some of the time I don't have ;-) on porting, > I would love to be able to invest that time into development efforts > directly. > Is there any chance you guys could be persuaded to switch to Squeak? Stef From jarober at comcast.net Sat Jul 24 20:27:01 2004 From: jarober at comcast.net (James Robertson) Date: Sat, 24 Jul 2004 14:27:01 -0400 Subject: About running Wiki on VWNC In-Reply-To: <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> Message-ID: <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> >I think that lot of the problems will be resolved with SmallWiki 2. >But it is also important to provide feedback to lukas and others. So can >you be more precise on the problems and how you would solve them? > >>One thing that really bugs me though is the fact that Smallwiki is >>maintained in VW. As a company we can not afford to buy VW just to run >>Smallwiki > >I will ask james about that. James what is the status of cincom on that? >Should a company running a wiki pay for VW? I think that this would be a >mistake because this could show how stable is the VM. But just let us know. Well, the answer depends on usage - academic/non-commercial usage is free. If a company wants to run VW on a server for internal use, then they would need a license. However, a commercial VW license isn't that expensive for such usage >>and instead of spending some of the time I don't have ;-) on porting, I >>would love to be able to invest that time into development efforts directly. >>Is there any chance you guys could be persuaded to switch to Squeak? > >Stef James Robertson, Product Manager, Cincom Smalltalk http://www.cincomsmalltalk.com/blog/blogView jarober at gosmalltalk.com From ducasse at iam.unibe.ch Sun Jul 25 00:16:14 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sun, 25 Jul 2004 00:16:14 +0200 Subject: About running Wiki on VWNC In-Reply-To: <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> Message-ID: <13AD6586-DDBF-11D8-B95F-000A9573EAE2@iam.unibe.ch> >> I think that lot of the problems will be resolved with SmallWiki 2. >> But it is also important to provide feedback to lukas and others. So >> can you be more precise on the problems and how you would solve them? >> >>> One thing that really bugs me though is the fact that Smallwiki is >>> maintained in VW. As a company we can not afford to buy VW just to >>> run Smallwiki >> >> I will ask james about that. James what is the status of cincom on >> that? Should a company running a wiki pay for VW? I think that this >> would be a mistake because this could show how stable is the VM. But >> just let us know. > > Well, the answer depends on usage - academic/non-commercial usage is > free. If a company wants to run VW on a server for internal use, then > they would need a license. However, a commercial VW license isn't > that expensive for such usage How much? Which means that we may stop to develop smallwiki on VW then. I think that this is the next logical consequence. I do not understand then what is the situation for bottom feeder, it is because you pay a license that you can offer it for free? Because Smallwiki is exactly in the same situation as bottomFeeder. Should I pay a license to use bottomFeeder if I'm working in a company and using your tool during my working time? Does it mean that if I want that my users can use a tool that I'm developing for free that I have to pay a license? I think that you are simply killing the use of VW for us then. There is also a really vicious side-effect for all the tools that we are developing in open-source. A programmer in a company using Moose (which is open-source) would have to pay. So it seems that developing open-source and VW are incompatible. To bad we will have to learn from that sad news. I think that you are doing a mistake but I cannot change it so we will have to adapt ourselves. >>> and instead of spending some of the time I don't have ;-) on >>> porting, I would love to be able to invest that time into >>> development efforts directly. >>> Is there any chance you guys could be persuaded to switch to Squeak? >> >> Stef From jarober at comcast.net Sun Jul 25 01:48:52 2004 From: jarober at comcast.net (James Robertson) Date: Sat, 24 Jul 2004 19:48:52 -0400 Subject: About running Wiki on VWNC In-Reply-To: <13AD6586-DDBF-11D8-B95F-000A9573EAE2@iam.unibe.ch> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> <13AD6586-DDBF-11D8-B95F-000A9573EAE2@iam.unibe.ch> Message-ID: <6.1.0.6.2.20040724194712.03ef5ec0@mail.comcast.net> >>Well, the answer depends on usage - academic/non-commercial usage is >>free. If a company wants to run VW on a server for internal use, then >>they would need a license. However, a commercial VW license isn't that >>expensive for such usage > >How much? > >Which means that we may stop to develop smallwiki on VW then. I think that >this is the next logical consequence. >I do not understand then what is the situation for bottom feeder, it is >because you pay a license that you can offer it for free? Because >Smallwiki is exactly in the same situation as bottomFeeder. >Should I pay a license to use bottomFeeder if I'm working in a company and >using your tool during my working time? >Does it mean that if I want that my users can use a tool that I'm >developing for free that I have to pay a license? I think that you are >simply killing the use of VW for us then. It really depends. I explicitly open sourced BottomFeeder, and I'm not making money off it. So, if you put SmallWiki under an Open Source license, you would also be ok on usage. It would be unsupported by Cincom, but I suspect that's not really an issue here. >There is also a really vicious side-effect for all the tools that we are >developing in open-source. A programmer in a company using Moose (which is >open-source) would have to pay. So it seems that developing open-source >and VW are incompatible. To bad we will have to learn from that sad news. >I think that you are doing a mistake but I cannot change it so we will >have to adapt ourselves. > >>>>and instead of spending some of the time I don't have ;-) on porting, I >>>>would love to be able to invest that time into development efforts directly. >>>>Is there any chance you guys could be persuaded to switch to Squeak? >>> >>>Stef James Robertson, Product Manager, Cincom Smalltalk http://www.cincomsmalltalk.com/blog/blogView jarober at gosmalltalk.com From michael at squeakland.org Sun Jul 25 01:57:09 2004 From: michael at squeakland.org (Michael Rueger) Date: Sat, 24 Jul 2004 16:57:09 -0700 Subject: About running Wiki on VWNC In-Reply-To: <6.1.0.6.2.20040724194712.03ef5ec0@mail.comcast.net> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> <13AD6586-DDBF-11D8-B95F-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724194712.03ef5ec0@mail.comcast.net> Message-ID: <4102F755.90100@squeakland.org> James Robertson wrote: > >>> Well, the answer depends on usage - academic/non-commercial usage is >>> free. If a company wants to run VW on a server for internal use, >>> then they would need a license. However, a commercial VW license >>> isn't that expensive for such usage ... > > It really depends. I explicitly open sourced BottomFeeder, and I'm not > making money off it. So, if you put SmallWiki under an Open Source > license, you would also be ok on usage. It would be unsupported by > Cincom, but I suspect that's not really an issue here. Hmm, isn't that a contradiction: "If a company wants to run VW on a server for internal use, then they would need a license. " and "So, if you put SmallWiki under an Open Source license, you would also be ok on usage." Let's try simple yes/no questions ;-) - If I run Smallwiki on our company server for internal use, do I need to pay or not? - If I run Smallwiki on our company server for internal and external use as the wiki for an OpenSource project, do I need to pay or not? - If I run Smallwiki on our company server for internal and external use as the wiki for a commercial project, do I need to pay or not? I hate these kind of questions too and I appreciate your effort in trying to answer them! Thanks Michael From ducasse at iam.unibe.ch Sun Jul 25 10:38:07 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sun, 25 Jul 2004 10:38:07 +0200 Subject: About running Wiki on VWNC In-Reply-To: <4102F755.90100@squeakland.org> References: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> <410280DD.20507@squeakland.org> <061CA96A-DD89-11D8-9A87-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724142537.03d40ec0@mail.comcast.net> <13AD6586-DDBF-11D8-B95F-000A9573EAE2@iam.unibe.ch> <6.1.0.6.2.20040724194712.03ef5ec0@mail.comcast.net> <4102F755.90100@squeakland.org> Message-ID: Hi james > Hmm, isn't that a contradiction: > > "If a company wants to run VW on a server for internal use, then they > would need a license. " > > and > > "So, if you put SmallWiki under an Open Source license, you would also > be ok on usage." > > Let's try simple yes/no questions ;-) > > - If I run Smallwiki on our company server for internal use, do I need > to pay or not? > > - If I run Smallwiki on our company server for internal and external > use as the wiki for an OpenSource project, do I need to pay or not? > > - If I run Smallwiki on our company server for internal and external > use as the wiki for a commercial project, do I need to pay or not? > > I hate these kind of questions too and I appreciate your effort in > trying to answer them! I want to know too because we are developing software which is open-source and can be used by companies and I think that the position of cincom should be clear for all of us. You wrote: "It really depends. I explicitly open sourced BottomFeeder, and I'm not making money off it. So, if you put SmallWiki under an Open Source license, you would also be ok on usage. It would be unsupported by Cincom, but I suspect that's not really an issue here." SmallWiki is open source but I do not understand what is unsupported here? Thanks From davidroe at bluewin.ch Sun Jul 25 10:41:23 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Sun, 25 Jul 2004 10:41:23 +0200 Subject: [SW2] First Commit to Cincom Public StORE References: <6E1DE538-D99C-11D8-843E-000393CFE6C8@iam.unibe.ch> <016501c46e41$9b584740$667ba8c0@DAVID1> Message-ID: <005001c47223$2e76b590$667ba8c0@DAVID1> Hi Lukas, > Have a look at the class SmallWiki2.TreeComponent, one of the few > components that is fully working already. I think, it is showing some > of the power of Seaside in a very nice way: the links to the structure > there are defined as action callbacks > > html > anchorWithAction: [ self session goTo: aModel ] > do: aModel title > > and Seaside takes care of updating the url and keeping the session. ah, now I understand! I wasn't aware of this possibilty to tell Seaside, how to update the URI and have overlooked your method RootWrapper>>updateUrl, where you add the title of a page to the URI, I guess. > Another nice thing to see in this example - but not related to your > question - is how the state of the component is kept, e.g. what nodes > of the tree are collapsed/expanded. yes, I have looked at that, that's a nice example of the power of Seaside. :) greets, David From davidroe at bluewin.ch Sun Jul 25 10:53:47 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Sun, 25 Jul 2004 10:53:47 +0200 Subject: [SW2] Some new features Message-ID: <007401c47224$ea388be0$667ba8c0@DAVID1> Hello, There's a new version of SmallWiki 2 available in Cincom store, which fixes some minor bugs of earlier versions and adds some new features: Links are now implemented, the same is true for Smilies. There's a new renderer to search the wiki and two new components are implemented: one can find broken links in the entire wiki, the other lists all outgoing links. So the basic things are now implemented and should work, but there are still a lot of missing things. Currently I'm working on a new user interface, so if you have some suggestions / wishes for that, please let me know. Then I have two questions to Lukas: - I have noticed that you have removed inst var 'resolver' from InternalLink, which was there in SW1 and was used to determine the target of the internal link. Now there's a setting method for the target instead. So is your intention to set this target every time when a link is created, in WikiParser>>createLink ? I'm not sure if that's the ways to go because you haven't done any preparation for that in WikiParser. - Some components that aren't implemented yet I don't understand. For instance the NearbyLinksComponent, what should be its purpose? When is a link "nearby" another? Or the PopularLinksComponent. To implement such a thing, we need something like an access counter for every page. Is your intention to add such a counter? kind regards, David From johnson at cs.uiuc.edu Sat Jul 24 20:22:51 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Sat, 24 Jul 2004 13:22:51 -0500 Subject: Camp Smalltalk results In-Reply-To: <3B44A7E8-DD77-11D8-9A87-000A9573EAE2@iam.unibe.ch> Message-ID: > For the security issues we have an extension of Lukas original model > (or UI based on the original model of lukas). You can find the master > report of David Vogel on http://kilana.unibe.ch:9090/smallwiki/. > Now the problem that we have is that the code is breaking certain parts > of SmallWiki > and david is not replying to emails (since I guess that he is getting > married). > So we know that a UI and a better security model is needed (the idea of > the new version is > that a local admin should not be able to grant more rights than he > owns, and that a local admin cannot damage other local admins). But > right now we are stuck. We will see how/if this is worth to rescue the > code of David Vogel or just to reimplement the idea. We used the "advanced security" system, which I think was David Vogel's. We did not find any bugs we couldn't fix. If you send a list of things that do not work (especially test cases that fail) then I would be willing to look at them. One thing we found annoying was that the default wiki with advanced security gives no permissions at all to the anonymous user. I think we changed initialization so that anonymous users can read and write pages and create new pages. In general, all of the UIUC wiki will be open for reading and writing by any user. However, I have a class where I would like to provide private folders for each student. We made an action that will take a "students" folder with a large number of subfolders and will automatically make users and roles for each subfolder and set permisisons so that students can read and write their own folders, but nobody else can read or write them. In this class, students write short essays several times a week and take turns grading them. I wanted to do this all on the wiki. The grader must be able to read the essays, but nobody else can read them until they are all turned in. I make a "VirtualFolder" structure that I can put in the folder of the grader. If the student is supposed to grade essay 3, I will initialize the virtual folder with the string "essay 3" and then the folder will act like it contains every page named "essay 3" in any of the student folders. When the grader is finished grading the essays, he can make his virtual folder readable by the world, and then everybody can read the essays. The pages representing the essays will have two URLs, their original one and the one through the virtual folder. They will have different permssions depending on which URL you use. We got all this to work and I was pleased. The advanced security system is complex, and security depends on roles being assigned correctly. It would be useful to have some sort of an analysis package that would make it easy to see who is allowed to do what to the various parts of the wiki. For example, it could draw a diagram of the wiki and color different parts with the roles that work on them. Until then, my solution will be to keep things very simple. Except for this one class, I'll just have the administrator and the anonymous role. From ducasse at iam.unibe.ch Sun Jul 25 15:40:01 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Sun, 25 Jul 2004 15:40:01 +0200 Subject: Camp Smalltalk results In-Reply-To: References: Message-ID: <20979203-DE40-11D8-AB8E-000A9573EAE2@iam.unibe.ch> >> For the security issues we have an extension of Lukas original model >> (or UI based on the original model of lukas). You can find the master >> report of David Vogel on http://kilana.unibe.ch:9090/smallwiki/. >> Now the problem that we have is that the code is breaking certain >> parts >> of SmallWiki >> and david is not replying to emails (since I guess that he is getting >> married). >> So we know that a UI and a better security model is needed (the idea >> of >> the new version is >> that a local admin should not be able to grant more rights than he >> owns, and that a local admin cannot damage other local admins). But >> right now we are stuck. We will see how/if this is worth to rescue the >> code of David Vogel or just to reimplement the idea. > > We used the "advanced security" system, which I think was David > Vogel's. We > did not find any bugs we couldn't fix. If you send a list of things > that do > not work (especially test cases that fail) then I would be willing to > look > at them. Excellent news. I guess that the problems we have are related to the fact that we have old instances of users around in old wikis and this conflicts when we use the new security model > One thing we found annoying was that the default wiki with advanced > security > gives no permissions at all to the anonymous user. I think we changed > initialization so that anonymous users can read and write pages and > create > new pages. Yes indeed this was strange. > In general, all of the UIUC wiki will be open for reading and writing > by any > user. However, I have a class where I would like to provide private > folders > for each student. We made an action that will take a "students" > folder with > a large number of subfolders and will automatically make users and > roles for > each subfolder and set permisisons so that students can read and write > their > own folders, but nobody else can read or write them. In this class, > students write short essays several times a week and take turns grading > them. I wanted to do this all on the wiki. The grader must be able > to read > the essays, but nobody else can read them until they are all turned > in. I > make a "VirtualFolder" structure that I can put in the folder of the > grader. > If the student is supposed to grade essay 3, I will initialize the > virtual > folder with the string "essay 3" and then the folder will act like it > contains every page named "essay 3" in any of the student folders. > When the > grader is finished grading the essays, he can make his virtual folder > readable by the world, and then everybody can read the essays. The > pages > representing the essays will have two URLs, their original one and the > one > through the virtual folder. They will have different permssions > depending > on which URL you use. > > We got all this to work and I was pleased. This is nice. I would not have known how to make this works. I think that SmallWiki will start to pay off as soon as you have non basic needs and in the long run we are winning. > The advanced security system is complex, and security depends on roles > being > assigned correctly. It would be useful to have some sort of an > analysis > package that would make it easy to see who is allowed to do what to the > various parts of the wiki. For example, it could draw a diagram of > the wiki > and color different parts with the roles that work on them. Until > then, my > solution will be to keep things very simple. Except for this one > class, > I'll just have the administrator and the anonymous role. Yes I agree having a overall picture is currently missing. I think that with the new version of SmallWiki building more advanced tools will be easier because writing web widgets is not easy right now. From renggli at iam.unibe.ch Mon Jul 26 07:39:52 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 26 Jul 2004 07:39:52 +0200 Subject: [SW2] Some new features In-Reply-To: <007401c47224$ea388be0$667ba8c0@DAVID1> References: <007401c47224$ea388be0$667ba8c0@DAVID1> Message-ID: <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> Hi David and others, > - I have noticed that you have removed inst var 'resolver' from > InternalLink, which was there in SW1 and was used to determine the > target of > the internal link. Now there's a setting method for the target > instead. So > is your intention to set this target every time when a link is > created, in > WikiParser>>createLink ? I'm not sure if that's the ways to go because > you > haven't done any preparation for that in WikiParser. I'm not sure about this yet, basically also because of the confusion if folders and pages should be unified or not, what would have an impact on the way of resolving links. I know a lot of people that do not like the concept of folders and pages, but personally I like them a lot and that's why I introduced them into SmallWiki. Most people are confused with the folder, so I tried to eliminate them in the current version. The comments of Ralph Johnson made me think again and gives some more reasons to keep them, I didn't thought of. Maybe we should discuss it this afternoon again ;) > - Some components that aren't implemented yet I don't understand. For > instance the NearbyLinksComponent, what should be its purpose? When is > a > link "nearby" another? Or the PopularLinksComponent. To implement such > a > thing, we need something like an access counter for every page. Is your > intention to add such a counter? Hehe ... have a look what your enemy has in their standard wiki implementation ;) * NearbyLinksComponent: I thought that this component should list wiki-structures that have a similar title to the current page. * PopularLinksComponents: Pages that have been edited a lot in the past. Of course the thing with the access counter would be an interesting feature too. I will have a look at your code now and continue with some coding. Also I intend to update to the latest version of Seaside. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From ducasse at iam.unibe.ch Mon Jul 26 09:49:18 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Mon, 26 Jul 2004 09:49:18 +0200 Subject: [SW2] Some new features In-Reply-To: <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <4CC93032-DED8-11D8-AF65-000A9573EAE2@iam.unibe.ch> On 26 juil. 04, at 07:39, Lukas Renggli wrote: > Hi David and others, > >> - I have noticed that you have removed inst var 'resolver' from >> InternalLink, which was there in SW1 and was used to determine the >> target of >> the internal link. Now there's a setting method for the target >> instead. So >> is your intention to set this target every time when a link is >> created, in >> WikiParser>>createLink ? I'm not sure if that's the ways to go >> because you >> haven't done any preparation for that in WikiParser. > > I'm not sure about this yet, basically also because of the confusion > if folders and pages should be unified or not, what would have an > impact on the way of resolving links. > > I know a lot of people that do not like the concept of folders and > pages, but personally I like them a lot and that's why I introduced > them into SmallWiki. Most people are confused with the folder, so I > tried to eliminate them in the current version. The comments of Ralph > Johnson made me think again and gives some more reasons to keep them, > I didn't thought of. Maybe we should discuss it this afternoon again > ;) > >> - Some components that aren't implemented yet I don't understand. For >> instance the NearbyLinksComponent, what should be its purpose? When >> is a >> link "nearby" another? Or the PopularLinksComponent. To implement >> such a >> thing, we need something like an access counter for every page. Is >> your >> intention to add such a counter? > > Hehe ... have a look what your enemy has in their standard wiki > implementation ;) > > * NearbyLinksComponent: I thought that this component should list > wiki-structures that have a similar title to the current page. > > * PopularLinksComponents: Pages that have been edited a lot in the > past. Of course the thing with the access counter would be an > interesting feature too. But my impression is that these are really extensions of the core. I do not see why we would have that per default? > > I will have a look at your code now and continue with some coding. > Also I intend to update to the latest version of Seaside. > > Cheers, > Lukas > > -- > Lukas Renggli > http://renggli.freezope.org > From renggli at iam.unibe.ch Mon Jul 26 10:16:09 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 26 Jul 2004 10:16:09 +0200 Subject: [SW2] Some new features In-Reply-To: <007401c47224$ea388be0$667ba8c0@DAVID1> References: <007401c47224$ea388be0$667ba8c0@DAVID1> Message-ID: <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> Hi David, some comments about your code: - I don't know if we want to do this again in SmallWiki 2. It caused some confusion in SmallWiki 1: InternalLink>>accept: aVisitor self isBroken ifFalse: [ aVisitor visitInternalLink: self ] ifTrue: [ aVisitor visitInternalLinkBroken: self ] - Mhh, I'm not quite happy with your extensions to the smiley-class. I do want to keep the Model free of any HTTP dependent stuff and you define the smilies using URLs pointing to the university server. I would prefer to have the images within the code and serve them using Seaside. A lot of people complained about being dependent of the university server. - A previously running test fails. - You added a space into the tree component before the label. This is the responsibility of the CSS-Stylesheet. No layout information in the Smalltalk code. Not even a single space :) It is much more consistant to put a ".label { margin-left: 10px }" into the style-sheet. Hey Frederic, could you have a look at the generated XHTML code and create some funky CSS? This would be really cool! TreeComponent>>renderNodeLabel: aModel on: html html spanClass: #label with: [ html anchorWithAction: [ self select: aModel ] do: ' ' , aModel title ]. - For your code in the subclasses of RelatedComponent: You start your search in the root of the wiki, but I think the default should be to start in the current structure. Maybe we want to add a property to let the user specify where to start. - I suspect you didn't understand the idea of RelatedComponent. Why do you have for all your subclasses two almost identical method-bodies like #structures and #search...? Why do you customize the rendering for each subclass? The only thing you need to do is to override the method #structures and everything else should be handled by the abstract parent. The strings you define in your rendering methods (e.g. 'There are no external links in the wiki' or 'In ... these links are outgoing:') shouldn't be there, this is the responsibility of the CSS-Stylesheet as this is a property of the layout. Generally every component should consist only of a configurable title-string (provided by BodyComponent) and all the necessary information within div, span, ul, li, etc tags. Of course I'm open for your opinions, I just tried to explain how I intended to implement the new generation of SmallWiki. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From davidroe at bluewin.ch Mon Jul 26 11:07:37 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Mon, 26 Jul 2004 11:07:37 +0200 Subject: [SW2] Some new features References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <005101c472f0$0093cbe0$647ba8c0@david2> Hello Lukas, > I > would prefer to have the images within the code and serve them using > Seaside. yes, that would be much better. I'm working on a better implementation of the tree, which use some icons for the nodes, for plus and minus, to provide a nicer design than using unordered lists. So there will be a lot of new small images now... How can I hold these images within the code? > - You added a space into the tree component before the label. This is > the responsibility of the CSS-Stylesheet. No layout information in the > Smalltalk code. Not even a single space :) *g* ok, I get that. As mentioned above, the tree implementation I would prefer to have, uses images now, so it ain't be possible to discard all layout information from the Smalltalk code. To set an image in the code should be okay, no? ;) > - I suspect you didn't understand the idea of RelatedComponent. Why do > you have for all your subclasses two almost identical method-bodies > like #structures and #search...? yes, you're right, that's bad... > Generally every > component should consist only of a configurable title-string (provided > by BodyComponent) and all the necessary information within div, span, > ul, li, etc tags. okay, that's better, I see. I have already worked on a CSS-Stylesheet for the new user interface, but I have not finished it so far. You can fetch it from the university server. So I will try to control all the layout stuff with this CSS file. Should I place this file also within the Smalltalk code somewhere, or is better the store it externaly? bye, David From janko.mivsek at eranova.si Mon Jul 26 11:31:42 2004 From: janko.mivsek at eranova.si (=?windows-1252?Q?Janko_Miv=9Aek?=) Date: Mon, 26 Jul 2004 11:31:42 +0200 Subject: [Smallwiki] Images in methods In-Reply-To: <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <4104CF7E.4030605@eranova.si> Hi Lukas, Having images in methods are simple, but you must be aware, that images are loaded separately from main page with parallel requests and separate urls. So you need to do: - first, put image in some method code, - make an "virtual" resource which will actually call above method - put url of that resurce to your main code. In Aida I implemented that in above way and results are just fine - having all your pictures in code solves problem of version control and also simplify installation of your app. If you are interested I can prepare some snipets from Aida code, but dor start read http://wiki.eranova.si/aida/Method+Images and http://wiki.eranova.si/aida/Method+Resources. Best regards Janko Lukas Renggli pravi: > Hi David, > > some comments about your code: > > - I don't know if we want to do this again in SmallWiki 2. It caused > some confusion in SmallWiki 1: > > InternalLink>>accept: aVisitor > self isBroken > ifFalse: [ aVisitor visitInternalLink: self ] > ifTrue: [ aVisitor visitInternalLinkBroken: self ] > > - Mhh, I'm not quite happy with your extensions to the smiley-class. I > do want to keep the Model free of any HTTP dependent stuff and you > define the smilies using URLs pointing to the university server. I would > prefer to have the images within the code and serve them using Seaside. > A lot of people complained about being dependent of the university server. > > - A previously running test fails. > > - You added a space into the tree component before the label. This is > the responsibility of the CSS-Stylesheet. No layout information in the > Smalltalk code. Not even a single space :) It is much more consistant to > put a ".label { margin-left: 10px }" into the style-sheet. Hey Frederic, > could you have a look at the generated XHTML code and create some funky > CSS? This would be really cool! > > TreeComponent>>renderNodeLabel: aModel on: html > html spanClass: #label with: [ > html anchorWithAction: [ self select: aModel ] do: ' ' , > aModel title ]. > > - For your code in the subclasses of RelatedComponent: You start your > search in the root of the wiki, but I think the default should be to > start in the current structure. Maybe we want to add a property to let > the user specify where to start. > > - I suspect you didn't understand the idea of RelatedComponent. Why do > you have for all your subclasses two almost identical method-bodies like > #structures and #search...? Why do you customize the rendering for each > subclass? The only thing you need to do is to override the method > #structures and everything else should be handled by the abstract > parent. The strings you define in your rendering methods (e.g. 'There > are no external links in the wiki' or 'In ... these links are > outgoing:') shouldn't be there, this is the responsibility of the > CSS-Stylesheet as this is a property of the layout. Generally every > component should consist only of a configurable title-string (provided > by BodyComponent) and all the necessary information within div, span, > ul, li, etc tags. > > Of course I'm open for your opinions, I just tried to explain how I > intended to implement the new generation of SmallWiki. > > Cheers, > Lukas > -- Janko Mivsek Systems Architect EraNova d.o.o. Ljubljana, Slovenia http://www.eranova.si From dsiegel at acm.org Mon Jul 26 12:47:05 2004 From: dsiegel at acm.org (dsiegel@acm.org) Date: Mon, 26 Jul 2004 05:47:05 -0500 Subject: [SW2] Some new features In-Reply-To: <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <20040726094708.IKLJ8960.out008.verizon.net@[162.84.142.100]> Lukas Renggli wrote: > I know a lot of people that do not like the concept of folders and > pages, but personally I like them a lot and that's why I introduced > them into SmallWiki. Most people are confused with the folder, so I > tried to eliminate them in the current version. The comments of Ralph > Johnson made me think again and gives some more reasons to keep them, I > didn't thought of. Maybe we should discuss it this afternoon again ;) I don't see any need for two concepts. Why not ask the user whether a new folder should be a sibling or a child, in the same way the old version let's the user decide whether a new name should represent a Folder, Glossary, Page or Resource? Instead, ask "Child Folder, Sibling Folder, Glossary or Resource"? We could add markup syntax to let the user make his choice explicitly and skip the question, but that's just an optimization. -dms From davidroe at bluewin.ch Mon Jul 26 12:56:15 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Mon, 26 Jul 2004 12:56:15 +0200 Subject: [SW2] Some new features References: <007401c47224$ea388be0$667ba8c0@DAVID1> <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <00ab01c472ff$2e9f8650$647ba8c0@david2> > Maybe we should discuss it this afternoon again ;) oh, there's a meeting today? hm, nobody told me. When exactly is it? greets, David From davidroe at bluewin.ch Mon Jul 26 13:03:28 2004 From: davidroe at bluewin.ch (=?iso-8859-1?Q?David_R=F6thlisberger?=) Date: Mon, 26 Jul 2004 13:03:28 +0200 Subject: [SW2] Some new features References: <007401c47224$ea388be0$667ba8c0@DAVID1> <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> <20040726094708.IKLJ8960.out008.verizon.net@[162.84.142.100]> Message-ID: <00b501c47300$300f2670$647ba8c0@david2> > I don't see any need for two concepts. Why not ask the user > whether a new folder should be a sibling or a child, in the > same way the old version let's the user decide whether a new > name should represent a Folder, Glossary, Page or Resource? > Instead, ask "Child Folder, Sibling Folder, Glossary or Resource"? yes, that would be more clear for a user. Maybe it's better to just ask: "Page, Glossary, Resource". Because the term "page" is more clear than "folder" in this context, and a sibling page to the current page would be created in the parent of the current page, not in it, I think. "Sibling folder" might confuse users. So a Page should have the possibilty to contain some children, like it does now in SW2. kind regards, David From renggli at iam.unibe.ch Mon Jul 26 13:54:46 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 26 Jul 2004 13:54:46 +0200 Subject: [SW2] Some new features In-Reply-To: <005101c472f0$0093cbe0$647ba8c0@david2> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> <005101c472f0$0093cbe0$647ba8c0@david2> Message-ID: <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> > yes, that would be much better. I'm working on a better implementation > of > the tree, which use some icons for the nodes, for plus and minus, to > provide > a nicer design than using unordered lists. So there will be a lot of > new > small images now... How can I hold these images within the code? Sure, but I don't really know how to do it VisualWorks in a (preferably) portable manner. >> - You added a space into the tree component before the label. This is >> the responsibility of the CSS-Stylesheet. No layout information in the >> Smalltalk code. Not even a single space :) > > *g* ok, I get that. As mentioned above, the tree implementation I would > prefer to have, uses images now, so it ain't be possible to discard all > layout information from the Smalltalk code. To set an image in the code > should be okay, no? ;) Images should be part of the CSS as well, I think. So if you have a green style enabled, you maybe want to have the tree-buttons in blue as well. I would suggest to keep all the component layout to a very minimal string-based css-enabled rendering and add images, colors, etc. using style-sheets. >> - I suspect you didn't understand the idea of RelatedComponent. Why do >> you have for all your subclasses two almost identical method-bodies >> like #structures and #search...? > > yes, you're right, that's bad... Mhh ... well, maybe my superclass RelatedComponent isn't very useable, e.g. for external links you cannot return a structure. Maybe the method should be #links and return a collection of link instances, that can be anything: mail, url, structure, broken, valid, etc. >> Generally every >> component should consist only of a configurable title-string (provided >> by BodyComponent) and all the necessary information within div, span, >> ul, li, etc tags. > > okay, that's better, I see. I have already worked on a CSS-Stylesheet > for > the new user interface, but I have not finished it so far. You can > fetch it > from the university server. So I will try to control all the layout > stuff > with this CSS file. Should I place this file also within the Smalltalk > code somewhere, or is better the store it externaly? I don't know yet, maybe we should discuss. Nothing providing CSS-Styles is there yet. Seaside is having some functionality, so maybe we want to build something on top there. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From renggli at iam.unibe.ch Mon Jul 26 13:54:46 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 26 Jul 2004 13:54:46 +0200 Subject: [SW2] Some new features In-Reply-To: <005101c472f0$0093cbe0$647ba8c0@david2> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> <005101c472f0$0093cbe0$647ba8c0@david2> Message-ID: <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> > yes, that would be much better. I'm working on a better implementation > of > the tree, which use some icons for the nodes, for plus and minus, to > provide > a nicer design than using unordered lists. So there will be a lot of > new > small images now... How can I hold these images within the code? Sure, but I don't really know how to do it VisualWorks in a (preferably) portable manner. >> - You added a space into the tree component before the label. This is >> the responsibility of the CSS-Stylesheet. No layout information in the >> Smalltalk code. Not even a single space :) > > *g* ok, I get that. As mentioned above, the tree implementation I would > prefer to have, uses images now, so it ain't be possible to discard all > layout information from the Smalltalk code. To set an image in the code > should be okay, no? ;) Images should be part of the CSS as well, I think. So if you have a green style enabled, you maybe want to have the tree-buttons in blue as well. I would suggest to keep all the component layout to a very minimal string-based css-enabled rendering and add images, colors, etc. using style-sheets. >> - I suspect you didn't understand the idea of RelatedComponent. Why do >> you have for all your subclasses two almost identical method-bodies >> like #structures and #search...? > > yes, you're right, that's bad... Mhh ... well, maybe my superclass RelatedComponent isn't very useable, e.g. for external links you cannot return a structure. Maybe the method should be #links and return a collection of link instances, that can be anything: mail, url, structure, broken, valid, etc. >> Generally every >> component should consist only of a configurable title-string (provided >> by BodyComponent) and all the necessary information within div, span, >> ul, li, etc tags. > > okay, that's better, I see. I have already worked on a CSS-Stylesheet > for > the new user interface, but I have not finished it so far. You can > fetch it > from the university server. So I will try to control all the layout > stuff > with this CSS file. Should I place this file also within the Smalltalk > code somewhere, or is better the store it externaly? I don't know yet, maybe we should discuss. Nothing providing CSS-Styles is there yet. Seaside is having some functionality, so maybe we want to build something on top there. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org From avanos at xs4all.nl Mon Jul 26 14:37:08 2004 From: avanos at xs4all.nl (Adriaan van Os) Date: Mon, 26 Jul 2004 14:37:08 +0200 (CEST) Subject: [SW2] Some new features In-Reply-To: <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> <005101c472f0$0093cbe0$647ba8c0@david2> <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: <6126.62.58.162.194.1090845428.squirrel@webmail.xs4all.nl> Hi Lukas, You can capture and store images in VW using 'UIMaskEditor open'. hth, Adriaan. >> yes, that would be much better. I'm working on a better implementation >> of >> the tree, which use some icons for the nodes, for plus and minus, to >> provide >> a nicer design than using unordered lists. So there will be a lot of >> new >> small images now... How can I hold these images within the code? > > Sure, but I don't really know how to do it VisualWorks in a > (preferably) portable manner. From Roel.Wuyts at ulb.ac.be Mon Jul 26 15:16:00 2004 From: Roel.Wuyts at ulb.ac.be (Roel Wuyts) Date: Mon, 26 Jul 2004 15:16:00 +0200 Subject: [SW2] Some new features In-Reply-To: <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <0CD56190-DEDC-11D8-91EE-000393CFE6C8@iam.unibe.ch> <005101c472f0$0093cbe0$647ba8c0@david2> <973A5B98-DEFA-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: For icons in trees in VisualWorks you should: (1) have a look at the class ListIconLibrary (2) make extensions on this class to keep your icons in (just take some existing ones as example) suppose you choose myIcon20x20, and myIcon20x20mask (3) you can then get this icon with the method #visualFor: #myIcon which will use your picture and the mask to produce a transparant icon. In the original StarBrowser I do this to have all kinds of icons in the classifications tree. If you want a more detailed example where your application controls really everything you can have a look at StarBrowser2, where I install custom visual blocks, like what you would do with a list. Just send me a mail with what you want to do exactly in case you have no idea what I'm talking about and I'll either do it or give you more detailed instructions. I don't know how proficient you are with this :-) In the meantime I figured it out :-) On 26 Jul 2004, at 13:54, Lukas Renggli wrote: >> yes, that would be much better. I'm working on a better >> implementation of >> the tree, which use some icons for the nodes, for plus and minus, to >> provide >> a nicer design than using unordered lists. So there will be a lot of >> new >> small images now... How can I hold these images within the code? > > Sure, but I don't really know how to do it VisualWorks in a > (preferably) portable manner. > >>> - You added a space into the tree component before the label. This is >>> the responsibility of the CSS-Stylesheet. No layout information in >>> the >>> Smalltalk code. Not even a single space :) >> >> *g* ok, I get that. As mentioned above, the tree implementation I >> would >> prefer to have, uses images now, so it ain't be possible to discard >> all >> layout information from the Smalltalk code. To set an image in the >> code >> should be okay, no? ;) > > Images should be part of the CSS as well, I think. So if you have a > green style enabled, you maybe want to have the tree-buttons in blue > as well. I would suggest to keep all the component layout to a very > minimal string-based css-enabled rendering and add images, colors, > etc. using style-sheets. > >>> - I suspect you didn't understand the idea of RelatedComponent. Why >>> do >>> you have for all your subclasses two almost identical method-bodies >>> like #structures and #search...? >> >> yes, you're right, that's bad... > > Mhh ... well, maybe my superclass RelatedComponent isn't very useable, > e.g. for external links you cannot return a structure. Maybe the > method should be #links and return a collection of link instances, > that can be anything: mail, url, structure, broken, valid, etc. > >>> Generally every >>> component should consist only of a configurable title-string >>> (provided >>> by BodyComponent) and all the necessary information within div, span, >>> ul, li, etc tags. >> >> okay, that's better, I see. I have already worked on a CSS-Stylesheet >> for >> the new user interface, but I have not finished it so far. You can >> fetch it >> from the university server. So I will try to control all the layout >> stuff >> with this CSS file. Should I place this file also within the Smalltalk >> code somewhere, or is better the store it externaly? > > I don't know yet, maybe we should discuss. Nothing providing > CSS-Styles is there yet. Seaside is having some functionality, so > maybe we want to build something on top there. > > Cheers, > Lukas > > -- > Lukas Renggli > http://renggli.freezope.org > > Roel Wuyts DeComp roel.wuyts at ulb.ac.be Universit? Libre de Bruxelles http://homepages.ulb.ac.be/~rowuyts/ Belgique Board Member of the European Smalltalk User Group: www.esug.org From dsiegel at acm.org Mon Jul 26 17:17:57 2004 From: dsiegel at acm.org (dsiegel@acm.org) Date: Mon, 26 Jul 2004 10:17:57 -0500 Subject: [SW2] Some new features In-Reply-To: <00b501c47300$300f2670$647ba8c0@david2> References: <007401c47224$ea388be0$667ba8c0@DAVID1> <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> <20040726094708.IKLJ8960.out008.verizon.net@[162.84.142.100]> <00b501c47300$300f2670$647ba8c0@david2> Message-ID: <20040726141801.JIBB22270.out012.verizon.net@[162.84.142.100]> =?iso-8859-1?Q?David_R=F6thlisberger?= wrote: > > I don't see any need for two concepts. Why not ask the user > > whether a new folder should be a sibling or a child, in the > > same way the old version let's the user decide whether a new > > name should represent a Folder, Glossary, Page or Resource? > > Instead, ask "Child Folder, Sibling Folder, Glossary or Resource"? > > yes, that would be more clear for a user. Maybe it's better to just ask: > "Page, Glossary, Resource". Because the term "page" is more clear than > "folder" in this context, and a sibling page to the current page would be > created in the parent of the current page, not in it, I think. I think parent-creating-child would be most common, but Ralph was interested in page-creates-sibling, too, to handle extension and continuation pages. If you favor (I don't) a style where you try to keep each page short, you'll be more inclined to create siblings. Of course, as long as its easy to move pages around the hierarchy, it's not that important where you put the page initially. -dms From charles at datasof.com Mon Jul 26 20:30:48 2004 From: charles at datasof.com (Charles A. Monteiro) Date: Mon, 26 Jul 2004 14:30:48 -0400 Subject: Tracking who changed what Message-ID: There does not seem to be an admin view that provides info on whom created a particular version of a page. For example the admin history view shows: Title: My Second Page Modified: July 26, 2004 11:25:17.051 by admin from 127.0.0.1 Version: 24 Document: Edit your page ... *My link>myGif* MOre stuff other stuff stuff from admin.. The documents are already tagged via their properties with their creator, I personally would like to see a "creator" or "author" field in the above view. -Charles -- Using Opera's revolutionary e-mail client: http://www.opera.com/m2/ From johnson at cs.uiuc.edu Fri Jul 30 00:07:13 2004 From: johnson at cs.uiuc.edu (Ralph Johnson) Date: Thu, 29 Jul 2004 17:07:13 -0500 Subject: [SW2] Some new features In-Reply-To: <20040726094708.IKLJ8960.out008.verizon.net@[162.84.142.100]> Message-ID: > I don't see any need for two concepts. Why not ask the user > whether a new folder should be a sibling or a child, in the > same way the old version let's the user decide whether a new > name should represent a Folder, Glossary, Page or Resource? > Instead, ask "Child Folder, Sibling Folder, Glossary or Resource"? "child glossary, sibling glossary, child resource, sibling resource". I think the notion of asking "folder, page, resource" is ugly. I can't think of a better general solution, though. My specific solution is to allow the "anonymous" user to only create pages, and to make those pages always be the sibling of other pages and the child of a folder. Only advanced users will be allowed to create folders. I have been thinking about what people have been saying on this list. I found it hard to think why you could being saying the things you were, and then I decided that your idea of a wiki was a tool for a few grad students. My idea of a wiki is for a few thousand users, some of whom have no experience with wikis. Simplicity is very important. I think you prefer power to simplicity. That is reasonable for some audiences, but not for mine. -Ralph Johnson From gaelli at iam.unibe.ch Fri Jul 30 20:41:59 2004 From: gaelli at iam.unibe.ch (Markus Gaelli) Date: Fri, 30 Jul 2004 20:41:59 +0200 Subject: [Q] "Namespaces" in SmallWiki(1) Message-ID: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> Hi, as I understood the folders, they can be used like name-spaces, no? I created a folder "scg" (to mirror our swiki), then there I wanted to create another folder "Howtos" for scg-stuff. BUT: howtos was already taken on a higher level. Is this my misunderstanding or a bug? How should I proceed? Cheers, Markus From renggli at iam.unibe.ch Fri Jul 30 22:10:34 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Fri, 30 Jul 2004 22:10:34 +0200 Subject: [Q] "Namespaces" in SmallWiki(1) In-Reply-To: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> References: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> Message-ID: <83BFA78C-E264-11D8-91EE-000393CFE6C8@iam.unibe.ch> > as I understood the folders, they can be used like name-spaces, no? - Folders are like folders/directories in the unix file-system, but in SmallWiki they have a document attached that is displayed when accessing it. - Pages are like text-files in the unix file-system. - Resources are like any other file (pictures, pdf, zip, ...) in the unix file-system. > I created a folder "scg" (to mirror our swiki), then there I wanted to > create another folder "Howtos" for scg-stuff. BUT: howtos was already > taken on a higher level. Is this my misunderstanding or a bug? How > should I proceed? In unix file-system you are able to nest folders with the same name, the same is possible with SmallWiki. I don't know the exact semantics of namespaces. So, you can have a folder structures like the following example, as long as the names of the children of a folder are all different: smallwiki <-- root folder howto scg howto smallwiki scg smallwiki Hope this helps, Lukas -- Lukas Renggli http://renggli.freezope.org From renggli at iam.unibe.ch Fri Jul 30 22:10:34 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Fri, 30 Jul 2004 22:10:34 +0200 Subject: [Q] "Namespaces" in SmallWiki(1) In-Reply-To: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> References: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> Message-ID: <83BFA78C-E264-11D8-91EE-000393CFE6C8@iam.unibe.ch> > as I understood the folders, they can be used like name-spaces, no? - Folders are like folders/directories in the unix file-system, but in SmallWiki they have a document attached that is displayed when accessing it. - Pages are like text-files in the unix file-system. - Resources are like any other file (pictures, pdf, zip, ...) in the unix file-system. > I created a folder "scg" (to mirror our swiki), then there I wanted to > create another folder "Howtos" for scg-stuff. BUT: howtos was already > taken on a higher level. Is this my misunderstanding or a bug? How > should I proceed? In unix file-system you are able to nest folders with the same name, the same is possible with SmallWiki. I don't know the exact semantics of namespaces. So, you can have a folder structures like the following example, as long as the names of the children of a folder are all different: smallwiki <-- root folder howto scg howto smallwiki scg smallwiki Hope this helps, Lukas -- Lukas Renggli http://renggli.freezope.org From gaelli at iam.unibe.ch Fri Jul 30 22:19:21 2004 From: gaelli at iam.unibe.ch (Markus Gaelli) Date: Fri, 30 Jul 2004 22:19:21 +0200 Subject: [Q] "Namespaces" in SmallWiki(1) In-Reply-To: <83BFA78C-E264-11D8-91EE-000393CFE6C8@iam.unibe.ch> References: <239EDE9C-E258-11D8-9218-000A958C4F3C@iam.unibe.ch> <83BFA78C-E264-11D8-91EE-000393CFE6C8@iam.unibe.ch> Message-ID: Hi Lukas, >> as I understood the folders, they can be used like name-spaces, no? > > - Folders are like folders/directories in the unix file-system, but in > SmallWiki they have a document attached that is displayed when > accessing it. > > - Pages are like text-files in the unix file-system. > > - Resources are like any other file (pictures, pdf, zip, ...) in the > unix file-system. > >> I created a folder "scg" (to mirror our swiki), then there I wanted >> to create another folder "Howtos" for scg-stuff. BUT: howtos was >> already taken on a higher level. Is this my misunderstanding or a >> bug? How should I proceed? > > In unix file-system you are able to nest folders with the same name, > the same is possible with SmallWiki. I don't know the exact semantics > of namespaces. > > So, you can have a folder structures like the following example, as > long as the names of the children of a folder are all different: > > smallwiki <-- root folder > howto > scg > howto > smallwiki > scg > smallwiki Thanks for the quick answer, this is how I understood it. But if you go to http://kilana.unibe.ch:9090/scg/ you will see that the existing howtos page, which is on the top, is immediately referenced, without giving me a chance to create a new one. Or is there already an existing scg folder I don't know of? Puzzled, Markus From ducasse at iam.unibe.ch Fri Jul 30 12:28:44 2004 From: ducasse at iam.unibe.ch (=?ISO-8859-1?Q?st=E9phane_ducasse?=) Date: Fri, 30 Jul 2004 12:28:44 +0200 Subject: [SW2] Some new features In-Reply-To: References: Message-ID: <3BE366E4-E213-11D8-9E7C-000A9573EAE2@iam.unibe.ch> Hi ralph I think that we are all looking for simplicity. This is really important for us too. So any solution that empowers the non-default users, but has a good default and simple solution should be the solution. :) Stef On 30 juil. 04, at 00:07, Ralph Johnson wrote: >> I don't see any need for two concepts. Why not ask the user >> whether a new folder should be a sibling or a child, in the >> same way the old version let's the user decide whether a new >> name should represent a Folder, Glossary, Page or Resource? >> Instead, ask "Child Folder, Sibling Folder, Glossary or Resource"? > > "child glossary, sibling glossary, child resource, sibling resource". > > I think the notion of asking "folder, page, resource" is ugly. I can't > think of a better general solution, though. My specific solution is to > allow the "anonymous" user to only create pages, and to make those > pages > always be the sibling of other pages and the child of a folder. Only > advanced users will be allowed to create folders. > > I have been thinking about what people have been saying on this list. > I > found it hard to think why you could being saying the things you were, > and > then I decided that your idea of a wiki was a tool for a few grad > students. > My idea of a wiki is for a few thousand users, some of whom have no > experience with wikis. Simplicity is very important. I think you > prefer > power to simplicity. That is reasonable for some audiences, but not > for > mine. > > -Ralph Johnson > From renggli at iam.unibe.ch Mon Jul 26 07:39:52 2004 From: renggli at iam.unibe.ch (Lukas Renggli) Date: Mon, 26 Jul 2004 07:39:52 +0200 Subject: [SW2] Some new features In-Reply-To: <007401c47224$ea388be0$667ba8c0@DAVID1> References: <007401c47224$ea388be0$667ba8c0@DAVID1> Message-ID: <3762F650-DEC6-11D8-91EE-000393CFE6C8@iam.unibe.ch> Hi David and others, > - I have noticed that you have removed inst var 'resolver' from > InternalLink, which was there in SW1 and was used to determine the > target of > the internal link. Now there's a setting method for the target > instead. So > is your intention to set this target every time when a link is > created, in > WikiParser>>createLink ? I'm not sure if that's the ways to go because > you > haven't done any preparation for that in WikiParser. I'm not sure about this yet, basically also because of the confusion if folders and pages should be unified or not, what would have an impact on the way of resolving links. I know a lot of people that do not like the concept of folders and pages, but personally I like them a lot and that's why I introduced them into SmallWiki. Most people are confused with the folder, so I tried to eliminate them in the current version. The comments of Ralph Johnson made me think again and gives some more reasons to keep them, I didn't thought of. Maybe we should discuss it this afternoon again ;) > - Some components that aren't implemented yet I don't understand. For > instance the NearbyLinksComponent, what should be its purpose? When is > a > link "nearby" another? Or the PopularLinksComponent. To implement such > a > thing, we need something like an access counter for every page. Is your > intention to add such a counter? Hehe ... have a look what your enemy has in their standard wiki implementation ;) * NearbyLinksComponent: I thought that this component should list wiki-structures that have a similar title to the current page. * PopularLinksComponents: Pages that have been edited a lot in the past. Of course the thing with the access counter would be an interesting feature too. I will have a look at your code now and continue with some coding. Also I intend to update to the latest version of Seaside. Cheers, Lukas -- Lukas Renggli http://renggli.freezope.org