diff --git a/Marina.package/MRConfig.class/README.md b/Marina.package/MRConfig.class/README.md new file mode 100644 index 0000000..909882f --- /dev/null +++ b/Marina.package/MRConfig.class/README.md @@ -0,0 +1,2 @@ +I store configuration elements for the Marina CMS. +I'm used by MRSetup. \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/adminUser..st b/Marina.package/MRConfig.class/instance/adminUser..st new file mode 100644 index 0000000..ee3e402 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/adminUser..st @@ -0,0 +1,3 @@ +accessing +adminUser: anObject + adminUser := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/adminUser.st b/Marina.package/MRConfig.class/instance/adminUser.st new file mode 100644 index 0000000..2876075 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/adminUser.st @@ -0,0 +1,3 @@ +accessing +adminUser + ^ adminUser \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbHostname..st b/Marina.package/MRConfig.class/instance/dbHostname..st new file mode 100644 index 0000000..5850f8e --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbHostname..st @@ -0,0 +1,3 @@ +accessing +dbHostname: anObject + dbHostname := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbHostname.st b/Marina.package/MRConfig.class/instance/dbHostname.st new file mode 100644 index 0000000..b825d11 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbHostname.st @@ -0,0 +1,3 @@ +accessing +dbHostname + ^ dbHostname \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbName..st b/Marina.package/MRConfig.class/instance/dbName..st new file mode 100644 index 0000000..bf84b79 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbName..st @@ -0,0 +1,3 @@ +accessing +dbName: anObject + dbName := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbName.st b/Marina.package/MRConfig.class/instance/dbName.st new file mode 100644 index 0000000..7bf7e1c --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbName.st @@ -0,0 +1,3 @@ +accessing +dbName + ^ dbName \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbPort..st b/Marina.package/MRConfig.class/instance/dbPort..st new file mode 100644 index 0000000..addf5e5 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbPort..st @@ -0,0 +1,3 @@ +accessing +dbPort: anObject + dbPort := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/dbPort.st b/Marina.package/MRConfig.class/instance/dbPort.st new file mode 100644 index 0000000..32ec3f7 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/dbPort.st @@ -0,0 +1,3 @@ +accessing +dbPort + ^ dbPort \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/hostname..st b/Marina.package/MRConfig.class/instance/hostname..st new file mode 100644 index 0000000..0b099c5 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/hostname..st @@ -0,0 +1,3 @@ +accessing +hostname: anObject + hostname := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/hostname.st b/Marina.package/MRConfig.class/instance/hostname.st new file mode 100644 index 0000000..d25669b --- /dev/null +++ b/Marina.package/MRConfig.class/instance/hostname.st @@ -0,0 +1,3 @@ +accessing +hostname + ^ hostname \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/initialize.st b/Marina.package/MRConfig.class/instance/initialize.st new file mode 100644 index 0000000..f20c4f9 --- /dev/null +++ b/Marina.package/MRConfig.class/instance/initialize.st @@ -0,0 +1,8 @@ +initialization +initialize + super initialize. + hostname := 'localhost'. + port := 8080. + dbHostname := 'localhost'. + dbName := 'Marina'. + dbPort := 27017. \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/port..st b/Marina.package/MRConfig.class/instance/port..st new file mode 100644 index 0000000..d28792d --- /dev/null +++ b/Marina.package/MRConfig.class/instance/port..st @@ -0,0 +1,3 @@ +accessing +port: anObject + port := anObject \ No newline at end of file diff --git a/Marina.package/MRConfig.class/instance/port.st b/Marina.package/MRConfig.class/instance/port.st new file mode 100644 index 0000000..727bb0f --- /dev/null +++ b/Marina.package/MRConfig.class/instance/port.st @@ -0,0 +1,3 @@ +accessing +port + ^ port \ No newline at end of file diff --git a/Marina.package/MRConfig.class/methodProperties.json b/Marina.package/MRConfig.class/methodProperties.json new file mode 100644 index 0000000..762a4b2 --- /dev/null +++ b/Marina.package/MRConfig.class/methodProperties.json @@ -0,0 +1,17 @@ +{ + "class" : { + }, + "instance" : { + "adminUser" : "ChristopheDemarey 7/8/2014 09:11", + "adminUser:" : "ChristopheDemarey 7/8/2014 09:11", + "dbHostname" : "ChristopheDemarey 7/8/2014 09:22", + "dbHostname:" : "ChristopheDemarey 7/8/2014 09:22", + "dbName" : "ChristopheDemarey 7/8/2014 09:11", + "dbName:" : "ChristopheDemarey 7/8/2014 09:11", + "dbPort" : "ChristopheDemarey 7/8/2014 09:11", + "dbPort:" : "ChristopheDemarey 7/8/2014 09:11", + "hostname" : "ChristopheDemarey 7/8/2014 09:11", + "hostname:" : "ChristopheDemarey 7/8/2014 09:11", + "initialize" : "ChristopheDemarey 7/8/2014 09:22", + "port" : "ChristopheDemarey 7/8/2014 09:11", + "port:" : "ChristopheDemarey 7/8/2014 09:11" } } diff --git a/Marina.package/MRConfig.class/properties.json b/Marina.package/MRConfig.class/properties.json new file mode 100644 index 0000000..d7f0721 --- /dev/null +++ b/Marina.package/MRConfig.class/properties.json @@ -0,0 +1,19 @@ +{ + "category" : "Marina-Models", + "classinstvars" : [ + ], + "classvars" : [ + ], + "commentStamp" : "ChristopheDemarey 7/8/2014 09:10", + "instvars" : [ + "adminUser", + "hostname", + "port", + "dbPort", + "dbName", + "dbHostname" ], + "name" : "MRConfig", + "pools" : [ + ], + "super" : "Object", + "type" : "normal" } diff --git a/Marina.package/MRSetup.class/class/configure.st b/Marina.package/MRSetup.class/class/configure.st new file mode 100644 index 0000000..7fea779 --- /dev/null +++ b/Marina.package/MRSetup.class/class/configure.st @@ -0,0 +1,17 @@ +public +configure + | config serverBasePath serverPort | + config := MRConfig new. + serverBasePath := UIManager default + request: 'Base path where the server is going to be deployed (e.g., www.marina.eu)' + initialAnswer: config hostname + title: 'Server base path'. + serverBasePath isEmptyOrNil + ifFalse: [ config hostname: serverBasePath ]. + serverPort := UIManager default + request: 'Port where the server should listen to (e.g., 8080)' + initialAnswer: config port + title: 'Server port'. + serverPort isEmptyOrNil + ifFalse: [ config port: (Number readFrom: serverPort) ]. + ^ config \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/nonInteractiveSetupWith..st b/Marina.package/MRSetup.class/class/nonInteractiveSetupWith..st new file mode 100644 index 0000000..9063ee6 --- /dev/null +++ b/Marina.package/MRSetup.class/class/nonInteractiveSetupWith..st @@ -0,0 +1,9 @@ +public +nonInteractiveSetupWith: aMarinaConfig + self + setupVoyageWith: aMarinaConfig; + dropDatabase; + setupWebsiteWithAdmin: aMarinaConfig adminUser. + self + startWebserverOn: aMarinaConfig hostname + port: aMarinaConfig port \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupAll.st b/Marina.package/MRSetup.class/class/setupAll.st index e5f5f69..cf34bb5 100644 --- a/Marina.package/MRSetup.class/class/setupAll.st +++ b/Marina.package/MRSetup.class/class/setupAll.st @@ -1,9 +1,7 @@ public setupAll + | config | (self confirm: 'This will erase your marina database, are you *really* sure?') - ifTrue: [ - self - setupVoyage; - dropDatabase; - setupWebsite; - setupWebserver ] \ No newline at end of file + ifTrue: [ + config := self configure. + self nonInteractiveSetupWith: config ] \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupVoyage.st b/Marina.package/MRSetup.class/class/setupVoyage.st deleted file mode 100644 index 812e351..0000000 --- a/Marina.package/MRSetup.class/class/setupVoyage.st +++ /dev/null @@ -1,6 +0,0 @@ -public -setupVoyage - | repository | - repository := VOMongoRepository database: 'marina'. - repository enableSingleton. - ^ repository \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupVoyageWith..st b/Marina.package/MRSetup.class/class/setupVoyageWith..st new file mode 100644 index 0000000..3317886 --- /dev/null +++ b/Marina.package/MRSetup.class/class/setupVoyageWith..st @@ -0,0 +1,9 @@ +public +setupVoyageWith: aMarinaConfig + | repository | + repository := VOMongoRepository + host: aMarinaConfig dbHostname + port: aMarinaConfig dbPort + database: aMarinaConfig dbName. + repository enableSingleton. + ^ repository \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupWebserver.st b/Marina.package/MRSetup.class/class/setupWebserver.st deleted file mode 100644 index 80b72fb..0000000 --- a/Marina.package/MRSetup.class/class/setupWebserver.st +++ /dev/null @@ -1,9 +0,0 @@ -public -setupWebserver - | serverBasePath serverPort | - serverBasePath := UIManager default request: 'Base path where the server is going to be deployed (e.g., www.marina.eu)' initialAnswer: 'localhost' title: 'Server base path'. - serverBasePath isEmptyOrNil ifTrue: [ serverBasePath := 'localhost' ]. - serverPort := UIManager default request: 'Port where the server should listen to (e.g., 8080)' initialAnswer: '8080' title: 'Server port'. - serverPort isEmptyOrNil ifTrue: [ serverPort := '8080' ]. - serverPort := Number readFrom: serverPort. - self startWebserverWith: serverBasePath port: serverPort \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupWebsite.st b/Marina.package/MRSetup.class/class/setupWebsite.st deleted file mode 100644 index b8a1616..0000000 --- a/Marina.package/MRSetup.class/class/setupWebsite.st +++ /dev/null @@ -1,3 +0,0 @@ -public -setupWebsite - ^ self new setupWebsite \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/setupWebsiteWithAdmin..st b/Marina.package/MRSetup.class/class/setupWebsiteWithAdmin..st new file mode 100644 index 0000000..a104e7a --- /dev/null +++ b/Marina.package/MRSetup.class/class/setupWebsiteWithAdmin..st @@ -0,0 +1,3 @@ +public +setupWebsiteWithAdmin: adminUserEmail + ^ self new setupWebsiteWithAdmin: adminUserEmail \ No newline at end of file diff --git a/Marina.package/MRSetup.class/class/startWebserverWith.port..st b/Marina.package/MRSetup.class/class/startWebserverOn.port..st similarity index 70% rename from Marina.package/MRSetup.class/class/startWebserverWith.port..st rename to Marina.package/MRSetup.class/class/startWebserverOn.port..st index 7b737d6..3664c22 100644 --- a/Marina.package/MRSetup.class/class/startWebserverWith.port..st +++ b/Marina.package/MRSetup.class/class/startWebserverOn.port..st @@ -1,4 +1,4 @@ public -startWebserverWith: serverBasePath port: serverPort +startWebserverOn: serverBasePath port: serverPort TDServer startOn: serverPort. TDServer server serverUrl: 'http://', (serverBasePath trimRight: [:char | char = $/ ]). \ No newline at end of file diff --git a/Marina.package/MRSetup.class/instance/createAdminUser.st b/Marina.package/MRSetup.class/instance/createAdminUser.st index 5fc1964..ab9a95c 100644 --- a/Marina.package/MRSetup.class/instance/createAdminUser.st +++ b/Marina.package/MRSetup.class/instance/createAdminUser.st @@ -1,9 +1,3 @@ creation createAdminUser - | user email | - user := MRUser new. - email := UIManager default request: 'Email of the admin user. This MUST be a valid email address.' initialAnswer: 'your.email@server.com' title: 'Email of admin'. - user email: email. - user fullName: email. - user save. - ^ user \ No newline at end of file + ^ self createAdminUserWithEmail: nil \ No newline at end of file diff --git a/Marina.package/MRSetup.class/instance/createAdminUserWithEmail..st b/Marina.package/MRSetup.class/instance/createAdminUserWithEmail..st new file mode 100644 index 0000000..35d0649 --- /dev/null +++ b/Marina.package/MRSetup.class/instance/createAdminUserWithEmail..st @@ -0,0 +1,14 @@ +creation +createAdminUserWithEmail: aString + | user email | + user := MRUser new. + email := aString. + email ifNil: [ + UIManager default + request: 'Email of the admin user. This MUST be a valid email address.' + initialAnswer: 'your.email@server.com' + title: 'Email of admin' ]. + user email: email. + user fullName: email. + user save. + ^ user \ No newline at end of file diff --git a/Marina.package/MRSetup.class/instance/setupWebsite.st b/Marina.package/MRSetup.class/instance/setupWebsite.st deleted file mode 100644 index c6ba130..0000000 --- a/Marina.package/MRSetup.class/instance/setupWebsite.st +++ /dev/null @@ -1,6 +0,0 @@ -actions -setupWebsite - MRStructure removeAll. - MRRoot removeAll. - MRUser removeAll. - self root \ No newline at end of file diff --git a/Marina.package/MRSetup.class/instance/setupWebsiteWithAdmin..st b/Marina.package/MRSetup.class/instance/setupWebsiteWithAdmin..st new file mode 100644 index 0000000..146058c --- /dev/null +++ b/Marina.package/MRSetup.class/instance/setupWebsiteWithAdmin..st @@ -0,0 +1,7 @@ +actions +setupWebsiteWithAdmin: adminUserEmail + MRStructure removeAll. + MRRoot removeAll. + MRUser removeAll. + adminUser := self createAdminUserWithEmail: adminUserEmail. + self root \ No newline at end of file diff --git a/Marina.package/MRSetup.class/methodProperties.json b/Marina.package/MRSetup.class/methodProperties.json index 1bab859..65e142e 100644 --- a/Marina.package/MRSetup.class/methodProperties.json +++ b/Marina.package/MRSetup.class/methodProperties.json @@ -1,17 +1,19 @@ { "class" : { + "configure" : "ChristopheDemarey 7/8/2014 23:00", "dropDatabase" : "DamienCassou 4/10/2014 18:03", - "setupAll" : "DamienCassou 4/14/2014 13:51", - "setupVoyage" : "DamienCassou 4/10/2014 11:31", - "setupWebserver" : "DamienCassou 4/14/2014 11:29", - "setupWebsite" : "DamienCassou 4/17/2014 10:50", - "startWebserverWith:port:" : "DamienCassou 4/14/2014 11:33" }, + "nonInteractiveSetupWith:" : "ChristopheDemarey 7/10/2014 00:11", + "setupAll" : "ChristopheDemarey 7/9/2014 21:45", + "setupVoyageWith:" : "ChristopheDemarey 7/9/2014 21:43", + "setupWebsiteWithAdmin:" : "ChristopheDemarey 7/10/2014 00:39", + "startWebserverOn:port:" : "ChristopheDemarey 7/9/2014 21:39" }, "instance" : { - "adminUser" : "DamienCassou 4/16/2014 18:13", + "adminUser" : "ChristopheDemarey 7/9/2014 21:37", "blog" : "DamienCassou 4/11/2014 06:14", "blogPost1" : "DamienCassou 4/11/2014 06:17", "blogTemplate" : "DamienCassou 4/14/2014 16:27", - "createAdminUser" : "DamienCassou 4/17/2014 10:45", + "createAdminUser" : "ChristopheDemarey 7/10/2014 15:18", + "createAdminUserWithEmail:" : "ChristopheDemarey 7/10/2014 15:18", "createBlog" : "DamienCassou 4/14/2014 16:29", "createBlogPost1" : "DamienCassou 4/15/2014 18:00", "createBlogTemplate" : "NicolasPetton 4/23/2014 14:47", @@ -25,4 +27,4 @@ "docPage" : "DamienCassou 4/14/2014 14:07", "indexPage" : "DamienCassou 4/10/2014 11:15", "root" : "DamienCassou 4/10/2014 11:15", - "setupWebsite" : "DamienCassou 4/17/2014 10:53" } } + "setupWebsiteWithAdmin:" : "ChristopheDemarey 7/10/2014 15:44" } } diff --git a/Marina.package/monticello.meta/version b/Marina.package/monticello.meta/version index 8b5941c..db39632 100644 --- a/Marina.package/monticello.meta/version +++ b/Marina.package/monticello.meta/version @@ -1 +1 @@ -(name 'Marina-NicolasPetton.55' message 'Adds user management' id '6dda4999-2132-4d01-a53c-5a2b5b8bd13e' date '15 May 2014' time '5:25:33.045435 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.54' message 'Fixes atom.xml post urls' id '8894e89b-6c2e-4113-b84c-2f5c0752db9c' date '15 May 2014' time '3:36:15.583485 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.53' message 'Persona audience getter/setter' id '6c2d8323-e981-46fb-a59b-a012afdeb70f' date '30 April 2014' time '3:32:50.834459 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.52' message 'Reverse blog post order' id '11e1e5d6-f70b-4fb8-8221-ed3ae6bdd583' date '30 April 2014' time '3:10:40.665067 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.51' message 'Store a relative path string in MRFile' id '688efad0-83cf-4053-a56d-455c224d591b' date '25 April 2014' time '1:56:35.135802 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.50' message 'Store the FileReference in MRFile' id '1ba49fef-3627-494b-99b2-cf3c573b7c23' date '25 April 2014' time '1:29:26.579847 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.49' message 'Use relative paths in MRFile' id 'f3ccf79e-1a6b-4f91-bfdf-bb8d3268a810' date '25 April 2014' time '11:55:55.991445 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.48' message 'Fixes MRRoot >> defaultTemplate' id 'e7f1e93c-a5b8-4e43-81ba-fbf782954484' date '24 April 2014' time '10:25:46.602552 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.47' message 'Fixes unit tests' id '7593c287-aa4e-4959-aa02-e28a09fdd7ca' date '24 April 2014' time '4:08:45.672283 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.46' message '- encore pages path - fixes MRBlog contents generation' id 'a78e1fb2-153f-4d6e-b6b2-953c2d9a47ea' date '23 April 2014' time '3:23:12.569995 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.45' message 'Do not number headings' id '74c63c91-436f-40cc-ba05-31b181ac7c45' date '21 April 2014' time '5:47:28.873014 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.44' message 'Adds the active property to the mustache context of MRBlog' id '53fbb09d-8fd7-4e8e-91f4-4310a3fe36b8' date '19 April 2014' time '2:19:34.550057 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.43' message 'Use local paths to resolve urls' id '64f29a2c-c5e8-4b2a-b6fd-352a53faf029' date '19 April 2014' time '1:52:03.796085 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.42' message 'Add an item in the mustache context to detect the active page' id '03e7165d-e24c-461b-81bf-04c88f56c1bd' date '18 April 2014' time '11:21:55.044237 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.41' message 'Refactor user handling' id 'cc6efe7a-fb8c-4832-aa98-f33d8ee8cda6' date '17 April 2014' time '2:35:53.601591 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.40' message 'exposes localPath as a state' id 'f7cc35ed-b660-4e70-97a0-fba34c2c953e' date '16 April 2014' time '6:06:14.406856 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.39' message 'Adds MRStructure >> localPath and MRTemplate >> partial' id 'b9bb1d5d-f6ba-4c92-adef-20d563017b18' date '16 April 2014' time '6:01:30.988823 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.38' message 'Mozilla''s persona authentification' id 'd9d734da-f0ac-44b7-b175-beb361a2bed0' date '16 April 2014' time '4:29:45.338264 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.37' message 'Fix tests' id '8a4cf70f-f757-4fe0-8c42-063a2c0659e4' date '15 April 2014' time '6:15:28.35959 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.36' message 'Handles defaultAuthor for pages' id 'f93e60bb-9dd9-4b41-9a46-f8ad94894e5d' date '15 April 2014' time '6:09:26.323593 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.35' message 'Small fixes related to templates' id 'e09153fc-f804-4487-a674-58b8de6f4eeb' date '15 April 2014' time '5:19:57.774068 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.34' message 'Handle MRFile content types' id '82cebccd-9667-47c0-ba28-956ee92be624' date '15 April 2014' time '5:14:08.767986 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.33' message 'Fixes MRPagesHandler >> pageForRequest: ' id '2534f4f1-2126-4197-ad54-258ff0c0f420' date '15 April 2014' time '5:01:28.511982 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.32' message 'Adds MRStructure >> canBeEdited and #pathString' id '98691434-952a-4e6f-b392-af85b7514ea7' date '15 April 2014' time '4:35:42.682002 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.31' message 'Basics of file uploads' id 'd72dfab5-9dff-49d7-b12d-cf0ed1b26489' date '15 April 2014' time '3:05:09.109991 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.30' message 'Fix order in test''s #setUp' id 'aa873de3-455d-4715-8f41-efb29ed5b2ec' date '15 April 2014' time '12:53:25.442577 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.29' message 'Use users in the root object to login' id 'a67ae03f-3088-41f9-8080-0ce03860c672' date '15 April 2014' time '11:42:55.390002 am' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.28' message 'Fix setup' id 'ce7a2af8-4dd9-4c8d-b504-79cb7011ea39' date '14 April 2014' time '5:31:43.369509 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.27' message 'Fixes title validation' id '9731daff-1a26-4756-90ac-ba76c118f537' date '14 April 2014' time '5:22:50.865123 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.26' message 'Template edition working' id '407a1869-911b-4af2-998a-b263c2b1bead' date '14 April 2014' time '4:49:24.755146 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.25' message 'Fixes title validation' id '260a3c50-ba13-4b94-8c04-68987926c213' date '14 April 2014' time '2:22:00.595121 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.24' message 'Missing call to #setupWebserver in MRSetup' id '3b59f406-c1ed-4d9d-bcdf-ae3076327828' date '14 April 2014' time '1:52:28.865385 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.23' message '- Review page searching from MRPagesHandler - Add blog''s atom.xml file - MRSetup will now let you configure the web server' id 'a469a154-f338-4144-a48a-025a6cdf33bf' date '14 April 2014' time '1:49:59.747487 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.22' message 'Several path-related changes + fixes for html generation' id '334322a8-4744-4508-9b7b-95919144a355' date '14 April 2014' time '11:02:12.585353 am' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.21' message 'Refactor handling of path through dedicated MRPath class' id '3e67b906-06df-4346-9603-4182a8e4419e' date '13 April 2014' time '5:01:23.331687 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.20' message 'Fix validation' id '896ec4ed-73ed-42bf-a6ec-caf6c19884e8' date '11 April 2014' time '6:24:48.624622 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.19' message 'Refactor page finding + implement fullPath + add tests' id 'b671bcaf-757c-4721-90bd-c013cafbff6b' date '11 April 2014' time '6:15:14.750401 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.18' message 'Add some more tests to structure finding' id 'a96e6228-101f-46a7-9bf8-344bfec98c0d' date '11 April 2014' time '5:15:45.796364 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.16' message 'Fix searching for pages with spaces in their titles' id '2cf4fe5a-cddb-4f65-8d62-1ae3d7589619' date '11 April 2014' time '4:55:30.572561 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.15' message 'Continue implementing the blog + plenty of tests' id '2cb81de0-fa08-4edc-8e69-3ab92738a5ea' date '11 April 2014' time '4:16:19.186381 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.14' message 'Start implementing a blog' id 'cd562842-a28f-4b63-8524-bba4429173d0' date '10 April 2014' time '6:17:49.159219 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.13' message 'Fix password validation problem + add helper to clean database' id '063d11f9-ce07-4036-93eb-891f019e83ba' date '10 April 2014' time '6:06:07.453256 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.12' message 'Page editing basics working' id '0ec522d3-1733-4aef-ac85-753311cfcc54' date '10 April 2014' time '5:01:45.147477 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.11' message '- Refactors MRStructure >> add: double dispatch - Adds MRDirectory >> validChildrenClasses' id 'ff116f59-b29c-43d6-b60f-495748df3819' date '10 April 2014' time '2:23:38.557484 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.10' message 'refactoring: MRRoot is a subclass of MRDirectory' id 'f44bec04-d521-47d1-bf62-8ac7d0af255c' date '10 April 2014' time '12:48:37.129503 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.9' message '- Exposes MRAdminPresenter >> root - Adds polymorphic methods to MRRoot and MRStructure' id 'cac126fe-e1be-4f74-b4b9-85df51ebd930' date '10 April 2014' time '11:05:33.265468 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.8' message 'Keep the adminPresenter as an instance variable' id 'e27ce01c-30d3-4f89-8f9c-9deb7b4808ed' date '9 April 2014' time '3:15:03.607299 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.7' message 'temp' id '7b5a6119-4908-4c09-a6e7-a25a5679269e' date '9 April 2014' time '2:04:02.541297 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.6' message 'Moves #logout to MRAdminPresenter' id '4639b0c4-6534-44dc-b03b-ff75d12cd2da' date '9 April 2014' time '2:02:44.135297 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.5' message '- MRStructure and subclasses improvements - register the login presenter at /marina - MRAdminPresenter implementation' id '5ba5649c-eb6d-469c-932e-42787b33b9a2' date '8 April 2014' time '5:42:38.578546 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.4' message 'More prototyping: basic server-side structure working' id '6236cc96-fdf7-48f6-8754-d0bd61500d53' date '26 March 2014' time '2:52:06.232085 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.3' message 'Adds class comments' id '917a770c-23b7-4e13-811a-862e1addd2b7' date '20 February 2014' time '11:00:41.195057 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.2' message 'Fixes class categories' id 'c0ab2160-251d-4e02-9527-7d3f328e92a8' date '19 February 2014' time '5:32:37.461309 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.1' message 'empty log message' id '6ae96756-13ca-4428-8ce6-eee4e393595c' date '19 February 2014' time '5:24:29.599319 pm' author 'NicolasPetton' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Marina-NicolasPetton.17' message 'Fixes structure validation' id 'de5aa5de-ae79-4cf3-95de-1c1b4ebcf5ac' date '11 April 2014' time '4:56:48.803618 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.16' message 'Do not expose MRDirectory >> add: ' id '319b374a-9729-4e32-8f1d-18bdae72795b' date '11 April 2014' time '4:44:19.593604 pm' author 'NicolasPetton' ancestors ((id '2cb81de0-fa08-4edc-8e69-3ab92738a5ea')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file +(name 'Marina-ChristopheDemarey.61' message 'fixes pb with adminUser (again).' id '61033d35-e1c4-466f-9f41-721d9314532c' date '10 July 2014' time '3:45:55.549289 pm' author 'ChristopheDemarey' ancestors ((name 'Marina-ChristopheDemarey.60' message 'fixes pb with adminUser.' id '7e8db9d4-e4c4-4628-a271-b2b274f03530' date '10 July 2014' time '3:19:48.913483 pm' author 'ChristopheDemarey' ancestors ((name 'Marina-ChristopheDemarey.59' message 'Add missing parameter to setUpWebsite' id '2d60c523-0e7b-49c3-aa80-a2ae5fee54a3' date '10 July 2014' time '12:41:13.050083 am' author 'ChristopheDemarey' ancestors ((name 'Marina-ChristopheDemarey.58' message 'fix wrong method name' id '03186588-bd4b-40f8-a729-4e96deb95f0c' date '10 July 2014' time '12:18:13.651097 am' author 'ChristopheDemarey' ancestors ((name 'Marina-ChristopheDemarey.57' message 'Refactor set up to be able to specify db host, port and db name.' id '692c5ce7-654f-412c-8fb9-eda0b352c82f' date '9 July 2014' time '9:49:19.256147 pm' author 'ChristopheDemarey' ancestors ((name 'Marina-ChristopheDemarey.56' message 'Add a non-interactive setup.' id '8d2330a5-c9b3-42f5-ae35-ec9b40133580' date '7 July 2014' time '11:43:55.111409 pm' author 'ChristopheDemarey' ancestors ((name 'Marina-NicolasPetton.55' message 'Adds user management' id '6dda4999-2132-4d01-a53c-5a2b5b8bd13e' date '15 May 2014' time '5:25:33.045435 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.54' message 'Fixes atom.xml post urls' id '8894e89b-6c2e-4113-b84c-2f5c0752db9c' date '15 May 2014' time '3:36:15.583485 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.53' message 'Persona audience getter/setter' id '6c2d8323-e981-46fb-a59b-a012afdeb70f' date '30 April 2014' time '3:32:50.834459 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.52' message 'Reverse blog post order' id '11e1e5d6-f70b-4fb8-8221-ed3ae6bdd583' date '30 April 2014' time '3:10:40.665067 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.51' message 'Store a relative path string in MRFile' id '688efad0-83cf-4053-a56d-455c224d591b' date '25 April 2014' time '1:56:35.135802 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.50' message 'Store the FileReference in MRFile' id '1ba49fef-3627-494b-99b2-cf3c573b7c23' date '25 April 2014' time '1:29:26.579847 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.49' message 'Use relative paths in MRFile' id 'f3ccf79e-1a6b-4f91-bfdf-bb8d3268a810' date '25 April 2014' time '11:55:55.991445 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.48' message 'Fixes MRRoot >> defaultTemplate' id 'e7f1e93c-a5b8-4e43-81ba-fbf782954484' date '24 April 2014' time '10:25:46.602552 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.47' message 'Fixes unit tests' id '7593c287-aa4e-4959-aa02-e28a09fdd7ca' date '24 April 2014' time '4:08:45.672283 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.46' message '- encore pages path - fixes MRBlog contents generation' id 'a78e1fb2-153f-4d6e-b6b2-953c2d9a47ea' date '23 April 2014' time '3:23:12.569995 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.45' message 'Do not number headings' id '74c63c91-436f-40cc-ba05-31b181ac7c45' date '21 April 2014' time '5:47:28.873014 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.44' message 'Adds the active property to the mustache context of MRBlog' id '53fbb09d-8fd7-4e8e-91f4-4310a3fe36b8' date '19 April 2014' time '2:19:34.550057 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.43' message 'Use local paths to resolve urls' id '64f29a2c-c5e8-4b2a-b6fd-352a53faf029' date '19 April 2014' time '1:52:03.796085 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.42' message 'Add an item in the mustache context to detect the active page' id '03e7165d-e24c-461b-81bf-04c88f56c1bd' date '18 April 2014' time '11:21:55.044237 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.41' message 'Refactor user handling' id 'cc6efe7a-fb8c-4832-aa98-f33d8ee8cda6' date '17 April 2014' time '2:35:53.601591 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.40' message 'exposes localPath as a state' id 'f7cc35ed-b660-4e70-97a0-fba34c2c953e' date '16 April 2014' time '6:06:14.406856 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.39' message 'Adds MRStructure >> localPath and MRTemplate >> partial' id 'b9bb1d5d-f6ba-4c92-adef-20d563017b18' date '16 April 2014' time '6:01:30.988823 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.38' message 'Mozilla''s persona authentification' id 'd9d734da-f0ac-44b7-b175-beb361a2bed0' date '16 April 2014' time '4:29:45.338264 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.37' message 'Fix tests' id '8a4cf70f-f757-4fe0-8c42-063a2c0659e4' date '15 April 2014' time '6:15:28.35959 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.36' message 'Handles defaultAuthor for pages' id 'f93e60bb-9dd9-4b41-9a46-f8ad94894e5d' date '15 April 2014' time '6:09:26.323593 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.35' message 'Small fixes related to templates' id 'e09153fc-f804-4487-a674-58b8de6f4eeb' date '15 April 2014' time '5:19:57.774068 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.34' message 'Handle MRFile content types' id '82cebccd-9667-47c0-ba28-956ee92be624' date '15 April 2014' time '5:14:08.767986 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.33' message 'Fixes MRPagesHandler >> pageForRequest: ' id '2534f4f1-2126-4197-ad54-258ff0c0f420' date '15 April 2014' time '5:01:28.511982 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.32' message 'Adds MRStructure >> canBeEdited and #pathString' id '98691434-952a-4e6f-b392-af85b7514ea7' date '15 April 2014' time '4:35:42.682002 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.31' message 'Basics of file uploads' id 'd72dfab5-9dff-49d7-b12d-cf0ed1b26489' date '15 April 2014' time '3:05:09.109991 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.30' message 'Fix order in test''s #setUp' id 'aa873de3-455d-4715-8f41-efb29ed5b2ec' date '15 April 2014' time '12:53:25.442577 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.29' message 'Use users in the root object to login' id 'a67ae03f-3088-41f9-8080-0ce03860c672' date '15 April 2014' time '11:42:55.390002 am' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.28' message 'Fix setup' id 'ce7a2af8-4dd9-4c8d-b504-79cb7011ea39' date '14 April 2014' time '5:31:43.369509 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.27' message 'Fixes title validation' id '9731daff-1a26-4756-90ac-ba76c118f537' date '14 April 2014' time '5:22:50.865123 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.26' message 'Template edition working' id '407a1869-911b-4af2-998a-b263c2b1bead' date '14 April 2014' time '4:49:24.755146 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.25' message 'Fixes title validation' id '260a3c50-ba13-4b94-8c04-68987926c213' date '14 April 2014' time '2:22:00.595121 pm' author 'NicolasPetton' ancestors ((name 'Marina-DamienCassou.24' message 'Missing call to #setupWebserver in MRSetup' id '3b59f406-c1ed-4d9d-bcdf-ae3076327828' date '14 April 2014' time '1:52:28.865385 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.23' message '- Review page searching from MRPagesHandler - Add blog''s atom.xml file - MRSetup will now let you configure the web server' id 'a469a154-f338-4144-a48a-025a6cdf33bf' date '14 April 2014' time '1:49:59.747487 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.22' message 'Several path-related changes + fixes for html generation' id '334322a8-4744-4508-9b7b-95919144a355' date '14 April 2014' time '11:02:12.585353 am' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.21' message 'Refactor handling of path through dedicated MRPath class' id '3e67b906-06df-4346-9603-4182a8e4419e' date '13 April 2014' time '5:01:23.331687 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.20' message 'Fix validation' id '896ec4ed-73ed-42bf-a6ec-caf6c19884e8' date '11 April 2014' time '6:24:48.624622 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.19' message 'Refactor page finding + implement fullPath + add tests' id 'b671bcaf-757c-4721-90bd-c013cafbff6b' date '11 April 2014' time '6:15:14.750401 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.18' message 'Add some more tests to structure finding' id 'a96e6228-101f-46a7-9bf8-344bfec98c0d' date '11 April 2014' time '5:15:45.796364 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.16' message 'Fix searching for pages with spaces in their titles' id '2cf4fe5a-cddb-4f65-8d62-1ae3d7589619' date '11 April 2014' time '4:55:30.572561 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.15' message 'Continue implementing the blog + plenty of tests' id '2cb81de0-fa08-4edc-8e69-3ab92738a5ea' date '11 April 2014' time '4:16:19.186381 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.14' message 'Start implementing a blog' id 'cd562842-a28f-4b63-8524-bba4429173d0' date '10 April 2014' time '6:17:49.159219 pm' author 'DamienCassou' ancestors ((name 'Marina-DamienCassou.13' message 'Fix password validation problem + add helper to clean database' id '063d11f9-ce07-4036-93eb-891f019e83ba' date '10 April 2014' time '6:06:07.453256 pm' author 'DamienCassou' ancestors ((name 'Marina-NicolasPetton.12' message 'Page editing basics working' id '0ec522d3-1733-4aef-ac85-753311cfcc54' date '10 April 2014' time '5:01:45.147477 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.11' message '- Refactors MRStructure >> add: double dispatch - Adds MRDirectory >> validChildrenClasses' id 'ff116f59-b29c-43d6-b60f-495748df3819' date '10 April 2014' time '2:23:38.557484 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.10' message 'refactoring: MRRoot is a subclass of MRDirectory' id 'f44bec04-d521-47d1-bf62-8ac7d0af255c' date '10 April 2014' time '12:48:37.129503 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.9' message '- Exposes MRAdminPresenter >> root - Adds polymorphic methods to MRRoot and MRStructure' id 'cac126fe-e1be-4f74-b4b9-85df51ebd930' date '10 April 2014' time '11:05:33.265468 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.8' message 'Keep the adminPresenter as an instance variable' id 'e27ce01c-30d3-4f89-8f9c-9deb7b4808ed' date '9 April 2014' time '3:15:03.607299 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.7' message 'temp' id '7b5a6119-4908-4c09-a6e7-a25a5679269e' date '9 April 2014' time '2:04:02.541297 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.6' message 'Moves #logout to MRAdminPresenter' id '4639b0c4-6534-44dc-b03b-ff75d12cd2da' date '9 April 2014' time '2:02:44.135297 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.5' message '- MRStructure and subclasses improvements - register the login presenter at /marina - MRAdminPresenter implementation' id '5ba5649c-eb6d-469c-932e-42787b33b9a2' date '8 April 2014' time '5:42:38.578546 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.4' message 'More prototyping: basic server-side structure working' id '6236cc96-fdf7-48f6-8754-d0bd61500d53' date '26 March 2014' time '2:52:06.232085 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.3' message 'Adds class comments' id '917a770c-23b7-4e13-811a-862e1addd2b7' date '20 February 2014' time '11:00:41.195057 am' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.2' message 'Fixes class categories' id 'c0ab2160-251d-4e02-9527-7d3f328e92a8' date '19 February 2014' time '5:32:37.461309 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.1' message 'empty log message' id '6ae96756-13ca-4428-8ce6-eee4e393595c' date '19 February 2014' time '5:24:29.599319 pm' author 'NicolasPetton' ancestors () stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())(name 'Marina-NicolasPetton.17' message 'Fixes structure validation' id 'de5aa5de-ae79-4cf3-95de-1c1b4ebcf5ac' date '11 April 2014' time '4:56:48.803618 pm' author 'NicolasPetton' ancestors ((name 'Marina-NicolasPetton.16' message 'Do not expose MRDirectory >> add: ' id '319b374a-9729-4e32-8f1d-18bdae72795b' date '11 April 2014' time '4:44:19.593604 pm' author 'NicolasPetton' ancestors ((id '2cb81de0-fa08-4edc-8e69-3ab92738a5ea')) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ())) stepChildren ()) \ No newline at end of file