From cdef062a37f90ba3647d6e3ea1c84b5eabe553ee Mon Sep 17 00:00:00 2001 From: arno Date: Fri, 3 Sep 2010 15:16:17 +0200 Subject: [PATCH 01/16] update to latest gisconverter.php --- library/gisconverter | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/gisconverter b/library/gisconverter index bcbe8cf..4ca90e6 160000 --- a/library/gisconverter +++ b/library/gisconverter @@ -1 +1 @@ -Subproject commit bcbe8cfed228ed3f5bb13a53ae166ee925ffc417 +Subproject commit 4ca90e650fc302a04e4f4d2459dbef5a650033e1 -- 2.39.2 From eeadfb4a33be12c53d36061feaa6fdcc42406764 Mon Sep 17 00:00:00 2001 From: arno Date: Fri, 3 Sep 2010 15:43:24 +0200 Subject: [PATCH 02/16] evt.target.value is not available during paste event. Work around that --- public/js/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/utils.js b/public/js/utils.js index 376fbe8..4c53c76 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -336,7 +336,7 @@ Element.addMethods(['input', 'textarea'], { } handler.apply(null, arguments); }); - proceed(element, 'paste', handler); + proceed(element, 'paste', handler.defer.bind(handler)); return proceed(element, 'change', handler); } return proceed(element, eventName, handler); -- 2.39.2 From 087eabcce8fb3e745e056e40a1b12869eab34f62 Mon Sep 17 00:00:00 2001 From: arno Date: Fri, 3 Sep 2010 15:43:54 +0200 Subject: [PATCH 03/16] fixes exception --- public/js/syj.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/js/syj.js b/public/js/syj.js index 565d0e1..47e5540 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -353,7 +353,7 @@ var SYJView = { document.observe('simplebox:shown', this.observer.bindAsEventListener(this)); SYJPathLength.update(); - if (FileList && FileReader) { + if (window.FileList && window.FileReader) { $("map").observe("dragenter", function(evt) { evt.stop();}); $("map").observe("dragover", function(evt) { evt.stop();}); $("map").observe("drop", function(evt) { -- 2.39.2 From 40368091bccafc07d6a580c934b72e963a635b16 Mon Sep 17 00:00:00 2001 From: arno Date: Fri, 3 Sep 2010 16:27:09 +0200 Subject: [PATCH 04/16] fixes: do not activate close button on submit events --- public/js/utils.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/public/js/utils.js b/public/js/utils.js index 4c53c76..aba7b1d 100644 --- a/public/js/utils.js +++ b/public/js/utils.js @@ -26,6 +26,9 @@ var CloseBtn = Class.create({ elt.insert({top: btn}); btn.observe("click", function(evt) { evt.stop(); + if (evt.detail === 0) { // it's not a real click, possibly a submit event + return; + } if (typeof options.callback === "function") { options.callback.call(elt); } -- 2.39.2 From 8206af7f51ffa6dcc8b07db0cec89bf90df18286 Mon Sep 17 00:00:00 2001 From: arno Date: Tue, 7 Sep 2010 20:39:30 +0200 Subject: [PATCH 05/16] rename OpenLayers style.css to olstyle.css --- application/controllers/IdxController.php | 2 +- public/css/olstyle.css | 1 + public/css/openlayers | 1 - 3 files changed, 2 insertions(+), 2 deletions(-) create mode 120000 public/css/olstyle.css delete mode 120000 public/css/openlayers diff --git a/application/controllers/IdxController.php b/application/controllers/IdxController.php index 77153c1..8a09a35 100644 --- a/application/controllers/IdxController.php +++ b/application/controllers/IdxController.php @@ -7,7 +7,7 @@ class IdxController extends Zend_Controller_Action public function init() { $this->_helper->SyjMedias->addScripts('idx'); - $this->view->headLink()->appendStylesheet('css/openlayers/style.css', "all"); + $this->view->headLink()->appendStylesheet('css/olstyle.css', "all"); $this->view->headLink()->appendStylesheet('css/generic.css', "all"); $this->view->headLink()->appendStylesheet('css/syj.css', "all"); } diff --git a/public/css/olstyle.css b/public/css/olstyle.css new file mode 120000 index 0000000..68f6c82 --- /dev/null +++ b/public/css/olstyle.css @@ -0,0 +1 @@ +../openlayers/openlayers/theme/default/style.css \ No newline at end of file diff --git a/public/css/openlayers b/public/css/openlayers deleted file mode 120000 index 320aa47..0000000 --- a/public/css/openlayers +++ /dev/null @@ -1 +0,0 @@ -../openlayers/openlayers/theme/default/ \ No newline at end of file -- 2.39.2 From d911856e66f14cbc94010880533292eb6b7b536c Mon Sep 17 00:00:00 2001 From: arno Date: Tue, 7 Sep 2010 23:39:47 +0200 Subject: [PATCH 06/16] update to zend 1.10.8 --- library/Zend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/library/Zend b/library/Zend index a6a6d95..ed28a55 160000 --- a/library/Zend +++ b/library/Zend @@ -1 +1 @@ -Subproject commit a6a6d95a75d5a657bd23602ebeb7e8ae3a547cb1 +Subproject commit ed28a5569f7d699332c60fa9b1067c9e3ad9b66b -- 2.39.2 From e4fe84ad088c55597a7772607da73f1d76d8d462 Mon Sep 17 00:00:00 2001 From: arno Date: Tue, 7 Sep 2010 23:56:24 +0200 Subject: [PATCH 07/16] script to help package a release --- scripts/release.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100755 scripts/release.py diff --git a/scripts/release.py b/scripts/release.py new file mode 100755 index 0000000..a1d30e4 --- /dev/null +++ b/scripts/release.py @@ -0,0 +1,98 @@ +#!/usr/bin/python + +TARGET="build" + +import shutil, os, sys, subprocess, tempfile, tarfile, glob, ConfigParser +pathjoin = os.path.join + +def createdir(): + if os.path.isdir(TARGET): + shutil.rmtree(TARGET, False) + os.makedirs(TARGET) + +def compress(path): + print ("compressing " + path) + tmpout = tempfile.TemporaryFile() + subprocess.Popen(['yui-compressor', path], stdout=tmpout).communicate() + tmpout.seek(0) + with open(path, 'w') as output: + output.write(tmpout.read()) + +def genscripts(): + tmpdir = tempfile.mkdtemp() + + # copy scripts OpenLayers.js + for path in glob.glob('public/js/*.js'): + shutil.copy(path, tmpdir) + + # build OpenLayers.js + subprocess.call(['python', 'buildUncompressed.py', 'syj'], + cwd = 'public/openlayers/openlayers/build') + shutil.copy('public/openlayers/openlayers/build/OpenLayers.js', tmpdir) + + config = ConfigParser.ConfigParser() + os.makedirs(pathjoin(TARGET, 'public/js')) + config.readfp(open('application/configs/medias.ini')) + for key, value in config.items('production'): + if key.startswith('scripts.'): + outpath = pathjoin(TARGET, 'public/js/' + key[len('scripts.'):] + '.js') + with open(outpath, 'w') as output: + for inpath in map(lambda p: pathjoin(tmpdir, p.strip() + '.js'), value.split(',')): + with open(inpath) as f: + output.write(f.read()) + compress(outpath) + shutil.rmtree(tmpdir) + +def genstyles(): + directory = pathjoin(TARGET, 'public/css') + os.makedirs(directory) + for path in glob.glob('public/css/*.css'): + shutil.copy(path, directory) + compress(pathjoin(TARGET, 'public/css', os.path.basename(path))) + +def genicons(): + directory = pathjoin(TARGET, 'public/icons') + os.makedirs(directory) + for path in glob.glob('public/icons/*'): + shutil.copy(path, directory) + +def genolmisc(): + directory = pathjoin(TARGET, 'public/img') + os.makedirs(directory) + for path in glob.glob('public/js/img/*'): + shutil.copy(path, directory) + +def tarbuild(): + print "creating syj.tar.gz" + targz = tarfile.open("build/syj.tar.gz", "w:gz") + for path in ["application", "library", "public"]: + targz.add(pathjoin(TARGET, path)) + targz.close() + + +def genlibrary(): + directory = pathjoin(TARGET, 'library') + os.makedirs(directory) + for path in glob.glob('library/*.php'): + shutil.copy(path, directory) + + directory = pathjoin(TARGET, 'library/Zend') + os.makedirs(directory) + for path in glob.glob('library/Zend/*'): # will not take .git + if (os.path.isdir(path)): + shutil.copytree(path, pathjoin(directory, os.path.basename(path))) + else: + shutil.copy(path, directory) + +def genmedias(): + genscripts() + genstyles() + genicons() + genolmisc() + genlibrary() + shutil.copytree('application', pathjoin(TARGET, 'application')) + shutil.copy('public/index.php', pathjoin(TARGET, 'public')) + tarbuild() + +createdir() +genmedias() -- 2.39.2 From c57706da408cacae1008851edb650ac33865bd22 Mon Sep 17 00:00:00 2001 From: arno Date: Tue, 7 Sep 2010 23:57:48 +0200 Subject: [PATCH 08/16] remove close button for geom form --- public/js/syj.js | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/public/js/syj.js b/public/js/syj.js index 47e5540..50184b2 100644 --- a/public/js/syj.js +++ b/public/js/syj.js @@ -531,28 +531,6 @@ var SYJView = { styles = this.editControl.handler.layerOptions.styleMap.styles; styles.select = styles.select_for_canvas; } - new CloseBtn($("geomform"), { - style : { - marginRight: "-40px", - marginTop: "-20px" - }, - callback: function(form) { - this.viewMode(); - this.mode = 'view'; - SYJDataUi.viewmode(); - this.messenger.hide(); - - if (this.unsavedRoute && typeof this.unsavedRoute.features !== "undefined") { - this.viewLayer.addFeatures(this.unsavedRoute.features); - } - if (this.unsavedRoute && typeof this.unsavedRoute.title !== "undefined") { - $("geom_title").value = this.unsavedRoute.title; - } else { - $("geom_title").value = ""; - } - this.unsavedRoute = null; - }.bind(this) - }); }, saveSuccess: function(transport) { -- 2.39.2 From d1b15aee9462fc556b230b80f2593debbc696b50 Mon Sep 17 00:00:00 2001 From: arno Date: Wed, 8 Sep 2010 07:59:07 +0200 Subject: [PATCH 09/16] fixes: raw format does not work any more --- application/controllers/IdxController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/controllers/IdxController.php b/application/controllers/IdxController.php index 8a09a35..ee1efb0 100644 --- a/application/controllers/IdxController.php +++ b/application/controllers/IdxController.php @@ -14,7 +14,7 @@ class IdxController extends Zend_Controller_Action public function rawmode(Syj_Model_Path $path) { $this->_helper->SyjReset->resetPlaceHolders(); - $this->_helper->SyjMedias->addScripts('syjraw'); + $this->_helper->SyjMedias->addScripts('rawidx'); $this->view->headLink()->appendStylesheet('css/generic.css', 'all'); $this->view->headLink()->appendStylesheet('css/syjraw.css', 'all'); -- 2.39.2 From c2349d8863a6366ff512d6c895fc0b6f7ad16207 Mon Sep 17 00:00:00 2001 From: arno Date: Thu, 9 Sep 2010 13:00:22 +0200 Subject: [PATCH 10/16] removes old sessions files in crontab --- scripts/crontab.syj | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/crontab.syj b/scripts/crontab.syj index e8c0c11..78d48be 100644 --- a/scripts/crontab.syj +++ b/scripts/crontab.syj @@ -2,4 +2,6 @@ MAILTO=arno@renevier.net # every 5 minutes, call syj php cron */5 * * * * /usr/bin/wget --header="Host: osm-syj.crans.org" http://localhost/cron -O /dev/null -o /dev/null # every month, update geoip db -0 0 3 * * /data/project/syj/scripts/updategeoip.sh +12 3 3 * * /data/project/syj/scripts/updategeoip.sh +# every day, delete old sessions files +47 4 * * * find /tmp/ -name "sess_*" -user syj -ctime +45 -exec rm -f '{}' \; -- 2.39.2 From c4dddade28f5f6c016ad73e98578d35ee19081ae Mon Sep 17 00:00:00 2001 From: arno Date: Thu, 9 Sep 2010 13:06:15 +0200 Subject: [PATCH 11/16] better english phrasing --- application/languages/lang_en.po | 132 +++++++++++----------- application/languages/lang_fr.po | 130 ++++++++++----------- application/views/scripts/idx/index.phtml | 2 +- 3 files changed, 132 insertions(+), 132 deletions(-) diff --git a/application/languages/lang_en.po b/application/languages/lang_en.po index ea39c68..f7a5559 100644 --- a/application/languages/lang_en.po +++ b/application/languages/lang_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-25 15:09+0200\n" +"POT-Creation-Date: 2010-09-09 13:05+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -55,8 +55,8 @@ msgid "Welcome on Syj." msgstr "Welcome on Syj." #: application/views/scripts/idx/index.phtml:17 -msgid "To create a journey, just click on the map to add points to your route. You can zoom and move map with controls upper left." -msgstr "To create a journey, just click on the map to add points to your route. You can zoom and move map with controls upper left." +msgid "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" +msgstr "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" #: application/views/scripts/idx/index.phtml:19 msgid "When you have finished a path, press \"save\", button." @@ -106,12 +106,12 @@ msgid "gpx export" msgstr "gpx export" #: application/views/scripts/idx/index.phtml:101 -#: application/controllers/IdxController.php:148 +#: application/controllers/IdxController.php:142 msgid "duplicate" msgstr "duplicate" #: application/views/scripts/idx/index.phtml:103 -#: application/controllers/IdxController.php:146 +#: application/controllers/IdxController.php:140 msgid "edit" msgstr "edit" @@ -156,7 +156,7 @@ msgid "Sources of the software running the website are publicly available under a agpl license. The map used to display the routes comes from openstreetmap." #: application/views/scripts/newpwd/success.phtml:4 -#: application/controllers/IdxController.php:139 +#: application/controllers/IdxController.php:133 msgid "A link to reset your password has been emailed to you" msgstr "A link to reset your password has been emailed to you" @@ -436,51 +436,51 @@ msgstr "" "\n" "Syj team" -#: application/controllers/LoginController.php:100 -#: application/controllers/IdxController.php:129 +#: application/controllers/LoginController.php:99 +#: application/controllers/IdxController.php:123 msgid "you must enter a login name" msgstr "you must enter a login name" -#: application/controllers/PendingController.php:32 +#: application/controllers/PendingController.php:33 msgid "account validated" msgstr "account validated" -#: application/controllers/PendingController.php:39 +#: application/controllers/PendingController.php:40 msgid "account deleted" msgstr "account deleted" -#: application/controllers/PendingController.php:43 +#: application/controllers/PendingController.php:44 msgid "account creation validation" msgstr "account creation validation" -#: application/controllers/PendingController.php:53 +#: application/controllers/PendingController.php:54 msgid "password changed" msgstr "password changed" -#: application/controllers/PendingController.php:61 +#: application/controllers/PendingController.php:62 msgid "request canceled" msgstr "request canceled" -#: application/controllers/PendingController.php:65 +#: application/controllers/PendingController.php:66 msgid "password reset validation" msgstr "password reset validation" -#: application/controllers/ContactController.php:14 +#: application/controllers/ContactController.php:13 msgid "contact form" msgstr "contact form" -#: application/controllers/ContactController.php:113 +#: application/controllers/ContactController.php:112 msgid "Hi," msgstr "Hi," -#: application/controllers/ContactController.php:122 -#: application/controllers/NewpwdController.php:69 -#: application/controllers/AccountController.php:71 -#: application/controllers/IdxController.php:150 +#: application/controllers/ContactController.php:121 +#: application/controllers/NewpwdController.php:68 +#: application/controllers/AccountController.php:70 +#: application/controllers/IdxController.php:144 msgid "Value is required" msgstr "Value is required" -#: application/controllers/ContactController.php:123 +#: application/controllers/ContactController.php:122 #: application/forms/Contact.php:32 #: application/validate/EmailAddress.php:13 msgid "Invalid email" @@ -497,163 +497,163 @@ msgstr "Oups, something went wrong" msgid "terms of use" msgstr "terms of use" -#: application/controllers/ListController.php:18 +#: application/controllers/ListController.php:15 #: application/layouts/scripts/footer.phtml:53 msgid "my routes" msgstr "my routes" -#: application/controllers/ListController.php:35 +#: application/controllers/ListController.php:32 msgid "There is no undo. Delete this route definitively ?" msgstr "There is no undo. Delete this route definitively ?" -#: application/controllers/ListController.php:36 -#: application/controllers/IdxController.php:126 +#: application/controllers/ListController.php:33 +#: application/controllers/IdxController.php:120 msgid "server could not be reached" msgstr "server could not be reached" -#: application/controllers/ListController.php:37 -#: application/controllers/IdxController.php:123 +#: application/controllers/ListController.php:34 +#: application/controllers/IdxController.php:117 msgid "server did not understood request. That's probably caused by a bug in SYJ" msgstr "server did not understood request. That's probably caused by a bug in SYJ" -#: application/controllers/ListController.php:38 -#: application/controllers/IdxController.php:124 +#: application/controllers/ListController.php:35 +#: application/controllers/IdxController.php:118 msgid "route not referenced on the server. It has probably been deleted." msgstr "route not referenced on the server. It has probably been deleted." -#: application/controllers/ListController.php:39 -#: application/controllers/IdxController.php:127 +#: application/controllers/ListController.php:36 +#: application/controllers/IdxController.php:121 msgid "there was a server error" msgstr "there was a server error" -#: application/controllers/ListController.php:40 -#: application/controllers/IdxController.php:128 +#: application/controllers/ListController.php:37 +#: application/controllers/IdxController.php:122 msgid "there was an unknown error" msgstr "there was an unknown error" -#: application/controllers/ListController.php:41 +#: application/controllers/ListController.php:38 msgid "route was successfully deleted" msgstr "route was successfully deleted" -#: application/controllers/AccountController.php:16 +#: application/controllers/AccountController.php:15 #: application/layouts/scripts/footer.phtml:39 msgid "my account" msgstr "my account" -#: application/controllers/AccountController.php:31 +#: application/controllers/AccountController.php:30 msgid "Wrong password" msgstr "Wrong password" -#: application/controllers/AccountController.php:44 -#: application/controllers/IdxController.php:137 +#: application/controllers/AccountController.php:43 +#: application/controllers/IdxController.php:131 msgid "an user is already registered with this email" msgstr "an user is already registered with this email" -#: application/controllers/AccountController.php:72 -#: application/controllers/IdxController.php:133 +#: application/controllers/AccountController.php:71 +#: application/controllers/IdxController.php:127 #: application/forms/Account.php:40 msgid "Password do not match" msgstr "Password do not match" -#: application/controllers/AccountController.php:73 +#: application/controllers/AccountController.php:72 #: application/forms/Account.php:33 #: application/forms/User.php:20 #, php-format msgid "At least %d characters" msgstr "At least %d characters" -#: application/controllers/AccountController.php:74 +#: application/controllers/AccountController.php:73 msgid "You have made no change" msgstr "You have made no change" -#: application/controllers/IdxController.php:32 -#: application/controllers/IdxController.php:84 +#: application/controllers/IdxController.php:26 +#: application/controllers/IdxController.php:78 #, php-format msgid "route by %s" msgstr "route by %s" -#: application/controllers/IdxController.php:54 +#: application/controllers/IdxController.php:48 msgid "route has been deleted" msgstr "route has been deleted" -#: application/controllers/IdxController.php:57 +#: application/controllers/IdxController.php:51 msgid "route does not exist" msgstr "route does not exist" -#: application/controllers/IdxController.php:116 -#: application/controllers/IdxController.php:142 +#: application/controllers/IdxController.php:110 +#: application/controllers/IdxController.php:136 msgid "Map by OpenStreetMap" msgstr "Map by OpenStreetMap" -#: application/controllers/IdxController.php:122 +#: application/controllers/IdxController.php:116 msgid "save took place successfully" msgstr "save took place successfully" -#: application/controllers/IdxController.php:125 +#: application/controllers/IdxController.php:119 msgid "similar path seems to already exist. Please do not create two exactly identical paths" msgstr "similar path seems to already exist. Please do not create two exactly identical paths" -#: application/controllers/IdxController.php:130 +#: application/controllers/IdxController.php:124 msgid "Login correct" msgstr "Login correct" -#: application/controllers/IdxController.php:131 +#: application/controllers/IdxController.php:125 msgid "Wrong login/password" msgstr "Wrong login/password" -#: application/controllers/IdxController.php:132 +#: application/controllers/IdxController.php:126 msgid "you must enter a password" msgstr "you must enter a password" -#: application/controllers/IdxController.php:134 +#: application/controllers/IdxController.php:128 msgid "You must accept terms of use" msgstr "You must accept terms of use" -#: application/controllers/IdxController.php:135 +#: application/controllers/IdxController.php:129 msgid "you must enter an email" msgstr "you must enter an email" -#: application/controllers/IdxController.php:136 +#: application/controllers/IdxController.php:130 msgid "invalid email" msgstr "invalid email" -#: application/controllers/IdxController.php:138 +#: application/controllers/IdxController.php:132 msgid "Account created" msgstr "Account created" -#: application/controllers/IdxController.php:140 +#: application/controllers/IdxController.php:134 msgid "Now, you can retry to save" msgstr "Now, you can retry to save" -#: application/controllers/IdxController.php:141 +#: application/controllers/IdxController.php:135 msgid "route by" msgstr "route by" -#: application/controllers/IdxController.php:143 +#: application/controllers/IdxController.php:137 msgid "checking availibilty" msgstr "checking availibilty" -#: application/controllers/IdxController.php:144 +#: application/controllers/IdxController.php:138 msgid "available pseudo" msgstr "available pseudo" -#: application/controllers/IdxController.php:145 +#: application/controllers/IdxController.php:139 msgid "unavailable pseudo" msgstr "unavailable pseudo" -#: application/controllers/IdxController.php:147 +#: application/controllers/IdxController.php:141 msgid "create" msgstr "create" -#: application/controllers/IdxController.php:149 +#: application/controllers/IdxController.php:143 msgid "You have an unsaved route" msgstr "You have an unsaved route" -#: application/controllers/IdxController.php:151 +#: application/controllers/IdxController.php:145 msgid "no result" msgstr "no result" -#: application/controllers/IdxController.php:152 +#: application/controllers/IdxController.php:146 msgid "could not analyze file content" msgstr "could not analyze file content" diff --git a/application/languages/lang_fr.po b/application/languages/lang_fr.po index 6791b0b..30c4552 100644 --- a/application/languages/lang_fr.po +++ b/application/languages/lang_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-08-25 15:09+0200\n" +"POT-Creation-Date: 2010-09-09 13:05+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -55,7 +55,7 @@ msgid "Welcome on Syj." msgstr "Bienvenue sur Syj." #: application/views/scripts/idx/index.phtml:17 -msgid "To create a journey, just click on the map to add points to your route. You can zoom and move map with controls upper left." +msgid "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" msgstr "Pour créer un trajet, cliquez simplement sur la carte pour ajouter des points à votre tracé. Vous pouvez zoomer et bouger la carte avec les boutons en haut à gauche." #: application/views/scripts/idx/index.phtml:19 @@ -106,12 +106,12 @@ msgid "gpx export" msgstr "export gpx" #: application/views/scripts/idx/index.phtml:101 -#: application/controllers/IdxController.php:148 +#: application/controllers/IdxController.php:142 msgid "duplicate" msgstr "dupliquer" #: application/views/scripts/idx/index.phtml:103 -#: application/controllers/IdxController.php:146 +#: application/controllers/IdxController.php:140 msgid "edit" msgstr "modifier" @@ -156,7 +156,7 @@ msgid "Sources of the software running the website are disponibles publiquement sous une licence agpl. La carte utilisée pour l'affichage des itinéraires vient d'openstreetmap." #: application/views/scripts/newpwd/success.phtml:4 -#: application/controllers/IdxController.php:139 +#: application/controllers/IdxController.php:133 msgid "A link to reset your password has been emailed to you" msgstr "Un email contenant un lien pour réinitialiser votre mot de passe vous a été envoyé" @@ -438,51 +438,51 @@ msgstr "" "\n" "L'équipe de Syj" -#: application/controllers/LoginController.php:100 -#: application/controllers/IdxController.php:129 +#: application/controllers/LoginController.php:99 +#: application/controllers/IdxController.php:123 msgid "you must enter a login name" msgstr "vous devez entrer un nom d'utilisateur" -#: application/controllers/PendingController.php:32 +#: application/controllers/PendingController.php:33 msgid "account validated" msgstr "compte validé" -#: application/controllers/PendingController.php:39 +#: application/controllers/PendingController.php:40 msgid "account deleted" msgstr "Compte supprimé" -#: application/controllers/PendingController.php:43 +#: application/controllers/PendingController.php:44 msgid "account creation validation" msgstr "validation de la création du compte" -#: application/controllers/PendingController.php:53 +#: application/controllers/PendingController.php:54 msgid "password changed" msgstr "mot de passe modifié" -#: application/controllers/PendingController.php:61 +#: application/controllers/PendingController.php:62 msgid "request canceled" msgstr "requête annulée" -#: application/controllers/PendingController.php:65 +#: application/controllers/PendingController.php:66 msgid "password reset validation" msgstr "validation de la réinitialisation du mot de passe" -#: application/controllers/ContactController.php:14 +#: application/controllers/ContactController.php:13 msgid "contact form" msgstr "formulaire de contact" -#: application/controllers/ContactController.php:113 +#: application/controllers/ContactController.php:112 msgid "Hi," msgstr "Bonjour," -#: application/controllers/ContactController.php:122 -#: application/controllers/NewpwdController.php:69 -#: application/controllers/AccountController.php:71 -#: application/controllers/IdxController.php:150 +#: application/controllers/ContactController.php:121 +#: application/controllers/NewpwdController.php:68 +#: application/controllers/AccountController.php:70 +#: application/controllers/IdxController.php:144 msgid "Value is required" msgstr "Le champ est requis" -#: application/controllers/ContactController.php:123 +#: application/controllers/ContactController.php:122 #: application/forms/Contact.php:32 #: application/validate/EmailAddress.php:13 msgid "Invalid email" @@ -499,163 +499,163 @@ msgstr "Oups, il y a eu un souci" msgid "terms of use" msgstr "conditions d'utilisation" -#: application/controllers/ListController.php:18 +#: application/controllers/ListController.php:15 #: application/layouts/scripts/footer.phtml:53 msgid "my routes" msgstr "mes itinéraires" -#: application/controllers/ListController.php:35 +#: application/controllers/ListController.php:32 msgid "There is no undo. Delete this route definitively ?" msgstr "Vous ne pourrez pas annuler. Supprimer l'itinéraire définitivement ?" -#: application/controllers/ListController.php:36 -#: application/controllers/IdxController.php:126 +#: application/controllers/ListController.php:33 +#: application/controllers/IdxController.php:120 msgid "server could not be reached" msgstr "serveur inaccessible" -#: application/controllers/ListController.php:37 -#: application/controllers/IdxController.php:123 +#: application/controllers/ListController.php:34 +#: application/controllers/IdxController.php:117 msgid "server did not understood request. That's probably caused by a bug in SYJ" msgstr "Le serveur n'a pas compris la requête. Il s'agit probablement d'un bug dans SYJ" -#: application/controllers/ListController.php:38 -#: application/controllers/IdxController.php:124 +#: application/controllers/ListController.php:35 +#: application/controllers/IdxController.php:118 msgid "route not referenced on the server. It has probably been deleted." msgstr "chemin non référencé sur le serveur. Il a probablement été supprimé." -#: application/controllers/ListController.php:39 -#: application/controllers/IdxController.php:127 +#: application/controllers/ListController.php:36 +#: application/controllers/IdxController.php:121 msgid "there was a server error" msgstr "Il s'est produit une erreur serveur" -#: application/controllers/ListController.php:40 -#: application/controllers/IdxController.php:128 +#: application/controllers/ListController.php:37 +#: application/controllers/IdxController.php:122 msgid "there was an unknown error" msgstr "Il s'est produit une erreur inconnue" -#: application/controllers/ListController.php:41 +#: application/controllers/ListController.php:38 msgid "route was successfully deleted" msgstr "l'itinéraire a été correctement supprimé" -#: application/controllers/AccountController.php:16 +#: application/controllers/AccountController.php:15 #: application/layouts/scripts/footer.phtml:39 msgid "my account" msgstr "mon compte" -#: application/controllers/AccountController.php:31 +#: application/controllers/AccountController.php:30 msgid "Wrong password" msgstr "Mauvais mot de passe" -#: application/controllers/AccountController.php:44 -#: application/controllers/IdxController.php:137 +#: application/controllers/AccountController.php:43 +#: application/controllers/IdxController.php:131 msgid "an user is already registered with this email" msgstr "il y'a déjà un utilisateur enregistré avec cet email" -#: application/controllers/AccountController.php:72 -#: application/controllers/IdxController.php:133 +#: application/controllers/AccountController.php:71 +#: application/controllers/IdxController.php:127 #: application/forms/Account.php:40 msgid "Password do not match" msgstr "Les mots de passe ne correspondent pas" -#: application/controllers/AccountController.php:73 +#: application/controllers/AccountController.php:72 #: application/forms/Account.php:33 #: application/forms/User.php:20 #, php-format msgid "At least %d characters" msgstr "Au moins %d caractères" -#: application/controllers/AccountController.php:74 +#: application/controllers/AccountController.php:73 msgid "You have made no change" msgstr "Vous n'avez fait aucun changement" -#: application/controllers/IdxController.php:32 -#: application/controllers/IdxController.php:84 +#: application/controllers/IdxController.php:26 +#: application/controllers/IdxController.php:78 #, php-format msgid "route by %s" msgstr "tracé par %s" -#: application/controllers/IdxController.php:54 +#: application/controllers/IdxController.php:48 msgid "route has been deleted" msgstr "l'itinéraire a été supprimé" -#: application/controllers/IdxController.php:57 +#: application/controllers/IdxController.php:51 msgid "route does not exist" msgstr "L'itinéraire n'existe pas" -#: application/controllers/IdxController.php:116 -#: application/controllers/IdxController.php:142 +#: application/controllers/IdxController.php:110 +#: application/controllers/IdxController.php:136 msgid "Map by OpenStreetMap" msgstr "Carte par OpenStreetMap" -#: application/controllers/IdxController.php:122 +#: application/controllers/IdxController.php:116 msgid "save took place successfully" msgstr "La sauvegarde s'est déroulée correctement" -#: application/controllers/IdxController.php:125 +#: application/controllers/IdxController.php:119 msgid "similar path seems to already exist. Please do not create two exactly identical paths" msgstr "Il semble qu'il y ait déjà un chemin similaire. Veuillez ne pas créer deux chemins exactement identiques" -#: application/controllers/IdxController.php:130 +#: application/controllers/IdxController.php:124 msgid "Login correct" msgstr "Vous êtes connecté" -#: application/controllers/IdxController.php:131 +#: application/controllers/IdxController.php:125 msgid "Wrong login/password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: application/controllers/IdxController.php:132 +#: application/controllers/IdxController.php:126 msgid "you must enter a password" msgstr "vous devez entrer un mot de passe" -#: application/controllers/IdxController.php:134 +#: application/controllers/IdxController.php:128 msgid "You must accept terms of use" msgstr "Vous devez accepter les conditions d'utilisation" -#: application/controllers/IdxController.php:135 +#: application/controllers/IdxController.php:129 msgid "you must enter an email" msgstr "vous devez entrer un email" -#: application/controllers/IdxController.php:136 +#: application/controllers/IdxController.php:130 msgid "invalid email" msgstr "email invalide" -#: application/controllers/IdxController.php:138 +#: application/controllers/IdxController.php:132 msgid "Account created" msgstr "Compte créé" -#: application/controllers/IdxController.php:140 +#: application/controllers/IdxController.php:134 msgid "Now, you can retry to save" msgstr "Maintenant, vous pouvez réessayer de sauvegarder" -#: application/controllers/IdxController.php:141 +#: application/controllers/IdxController.php:135 msgid "route by" msgstr "tracé par" -#: application/controllers/IdxController.php:143 +#: application/controllers/IdxController.php:137 msgid "checking availibilty" msgstr "vérification de la disponibilité" -#: application/controllers/IdxController.php:144 +#: application/controllers/IdxController.php:138 msgid "available pseudo" msgstr "pseudo disponible" -#: application/controllers/IdxController.php:145 +#: application/controllers/IdxController.php:139 msgid "unavailable pseudo" msgstr "pseudo non disponible" -#: application/controllers/IdxController.php:147 +#: application/controllers/IdxController.php:141 msgid "create" msgstr "créér" -#: application/controllers/IdxController.php:149 +#: application/controllers/IdxController.php:143 msgid "You have an unsaved route" msgstr "Vous avez un itinéraire non sauvegardé" -#: application/controllers/IdxController.php:151 +#: application/controllers/IdxController.php:145 msgid "no result" msgstr "pas de résultat" -#: application/controllers/IdxController.php:152 +#: application/controllers/IdxController.php:146 msgid "could not analyze file content" msgstr "impossible d'analyser le contenu du fichier" diff --git a/application/views/scripts/idx/index.phtml b/application/views/scripts/idx/index.phtml index 95535d3..a6d2760 100644 --- a/application/views/scripts/idx/index.phtml +++ b/application/views/scripts/idx/index.phtml @@ -14,7 +14,7 @@ path and !$this->loggedUser) {?> translate('Welcome on Syj.')?>
-translate('To create a journey, just click on the map to add points to your route. You can zoom and move map with controls upper left.')?> +translate('To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner')?>
translate('When you have finished a path, press "save", button.')?> -- 2.39.2 From d46d626700669a4c9a1e9ffc407fa89e6d6c7e21 Mon Sep 17 00:00:00 2001 From: arno Date: Wed, 15 Sep 2010 16:49:12 +0200 Subject: [PATCH 12/16] lighttpd.conf --- .gitignore | 1 + scripts/lighttpd.conf | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 scripts/lighttpd.conf diff --git a/.gitignore b/.gitignore index 18a3bfb..a4b58c7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ application/languages/*.po~ scripts/jslint.js generated/mails.txt build/ +scripts/lighttpd.conf diff --git a/scripts/lighttpd.conf b/scripts/lighttpd.conf new file mode 100644 index 0000000..d4c0368 --- /dev/null +++ b/scripts/lighttpd.conf @@ -0,0 +1,39 @@ +server.document-root = "/data/project/syj/public" +server.port = 10000 + +server.modules = ( + "mod_rewrite", + "mod_compress", + "mod_fastcgi", + "mod_accesslog", +) + +fastcgi.server += ( ".php" => + (( + "bin-path" => "/usr/bin/php5-cgi", + "socket" => "/tmp/php.socket", + "max-procs" => 1, + "idle-timeout" => 20, + "bin-environment" => ( + "PHP_FCGI_CHILDREN" => "4", + "PHP_FCGI_MAX_REQUESTS" => "10000" + ), + "bin-copy-environment" => ( + "PATH", "SHELL", "USER" + ), + "broken-scriptfilename" => "enable" + )) +) +url.rewrite-if-not-file = ("/[^\?]*(\?.*)?$" => "/index.php$1" ) + +index-file.names = ( "index.php" ) + +server.pid-file = "/data/work/syj/lighttpd/lighttpd.pid" +server.errorlog = "/data/work/syj/lighttpd/lighttpd-error.log" +accesslog.filename = "/data/work/syj/lighttpd/lighttpd-access.log" +accesslog.format = "%{X-Forwarded-For}i %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" + +include_shell "/usr/share/lighttpd/create-mime.assign.pl" + +compress.cache-dir = "/data/work/syj/lighttpd/lighttpd-cache" +compress.filetype = ( "application/javascript", "text/css") -- 2.39.2 From 03f49f88786c9eefcb850927958646266f11a86d Mon Sep 17 00:00:00 2001 From: arno Date: Wed, 15 Sep 2010 16:19:09 +0200 Subject: [PATCH 13/16] vacuum tables manually --- scripts/crontab.syj | 4 ++++ scripts/updategeoip.sh | 1 + scripts/updategeonames.sh | 1 + 3 files changed, 6 insertions(+) diff --git a/scripts/crontab.syj b/scripts/crontab.syj index 78d48be..4dfe865 100644 --- a/scripts/crontab.syj +++ b/scripts/crontab.syj @@ -5,3 +5,7 @@ MAILTO=arno@renevier.net 12 3 3 * * /data/project/syj/scripts/updategeoip.sh # every day, delete old sessions files 47 4 * * * find /tmp/ -name "sess_*" -user syj -ctime +45 -exec rm -f '{}' \; +# every day, vacuum tables +48 4 * * * psql syj syj -c "VACUUM ANALYZE users" +48 4 * * * psql syj syj -c "VACUUM ANALYZE paths" +48 4 * * * psql syj syj -c "VACUUM ANALYZE pending_actions" diff --git a/scripts/updategeoip.sh b/scripts/updategeoip.sh index eb9327e..1626bb3 100755 --- a/scripts/updategeoip.sh +++ b/scripts/updategeoip.sh @@ -81,3 +81,4 @@ unzip ${GEOIPDB##*/} $GEOIPCVS # insert all values from csv to database sed -e 's/"\([^"]\+\)","\([^"]\+\)","\([^"]\+\)","\([^"]\+\)","\([^"]\+\)","\([^"]\+\)"/INSERT INTO geoip (begin_ip, end_ip, country) VALUES ('\''\3'\'','\''\4'\'','\''\5'\'');/' $GEOIPCVS | psql --set "ON_ERROR_STOP=1" -f - +psql --set "ON_ERROR_STOP=1" -c "VACUUM ANALYZE geoip;" diff --git a/scripts/updategeonames.sh b/scripts/updategeonames.sh index ff5c8cd..04712fe 100755 --- a/scripts/updategeonames.sh +++ b/scripts/updategeonames.sh @@ -72,4 +72,5 @@ for line in $(cat ${GEONAMESXML##*/}); do done echo "INSERT INTO geonames (country, minlon, minlat, maxlon, maxlat) VALUES ('EU', -26, 34, 40, 68);" >> $TMPFILE echo "INSERT INTO geonames (country, minlon, minlat, maxlon, maxlat) VALUES ('AP', 90, -20, -140, 68);" >> $TMPFILE +echo "VACUUM ANALYZE geonames;" >> $TMPFILE psql --set "ON_ERROR_STOP=1" -f $TMPFILE -- 2.39.2 From 96d851254c810af41225f775caf7c6b98fce7de9 Mon Sep 17 00:00:00 2001 From: arno Date: Sun, 19 Sep 2010 10:36:19 +0200 Subject: [PATCH 14/16] do not mail vacuum output from crontab --- scripts/crontab.syj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/crontab.syj b/scripts/crontab.syj index 4dfe865..0360fd4 100644 --- a/scripts/crontab.syj +++ b/scripts/crontab.syj @@ -6,6 +6,6 @@ MAILTO=arno@renevier.net # every day, delete old sessions files 47 4 * * * find /tmp/ -name "sess_*" -user syj -ctime +45 -exec rm -f '{}' \; # every day, vacuum tables -48 4 * * * psql syj syj -c "VACUUM ANALYZE users" -48 4 * * * psql syj syj -c "VACUUM ANALYZE paths" -48 4 * * * psql syj syj -c "VACUUM ANALYZE pending_actions" +48 4 * * * psql syj syj -c "VACUUM ANALYZE users" > /dev/null +48 4 * * * psql syj syj -c "VACUUM ANALYZE paths" > /dev/null +48 4 * * * psql syj syj -c "VACUUM ANALYZE pending_actions" > /dev/null -- 2.39.2 From dda857e1579fd92e7f6236c999f1d43a5d0e8a74 Mon Sep 17 00:00:00 2001 From: arno Date: Sun, 19 Sep 2010 20:54:58 +0200 Subject: [PATCH 15/16] fixes welcome popup wording --- application/languages/lang_en.po | 7 ++++--- application/languages/lang_fr.po | 6 +++--- application/views/scripts/idx/index.phtml | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/application/languages/lang_en.po b/application/languages/lang_en.po index f7a5559..e12aa17 100644 --- a/application/languages/lang_en.po +++ b/application/languages/lang_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-09 13:05+0200\n" +"POT-Creation-Date: 2010-09-19 20:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -55,8 +55,9 @@ msgid "Welcome on Syj." msgstr "Welcome on Syj." #: application/views/scripts/idx/index.phtml:17 -msgid "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" -msgstr "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" +#, fuzzy +msgid "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" +msgstr "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" #: application/views/scripts/idx/index.phtml:19 msgid "When you have finished a path, press \"save\", button." diff --git a/application/languages/lang_fr.po b/application/languages/lang_fr.po index 30c4552..12bbc60 100644 --- a/application/languages/lang_fr.po +++ b/application/languages/lang_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-09 13:05+0200\n" +"POT-Creation-Date: 2010-09-19 20:54+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -55,8 +55,8 @@ msgid "Welcome on Syj." msgstr "Bienvenue sur Syj." #: application/views/scripts/idx/index.phtml:17 -msgid "To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" -msgstr "Pour créer un trajet, cliquez simplement sur la carte pour ajouter des points à votre tracé. Vous pouvez zoomer et bouger la carte avec les boutons en haut à gauche." +msgid "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" +msgstr "Pour créer un trajet, pressez simplement le bouton \"commencer un itinéraire\" puis cliquez sur la carte pour ajouter des points à votre tracé. Vous pouvez zoomer et bouger la carte avec les boutons en haut à gauche." #: application/views/scripts/idx/index.phtml:19 msgid "When you have finished a path, press \"save\", button." diff --git a/application/views/scripts/idx/index.phtml b/application/views/scripts/idx/index.phtml index a6d2760..c4222f4 100644 --- a/application/views/scripts/idx/index.phtml +++ b/application/views/scripts/idx/index.phtml @@ -14,7 +14,7 @@ path and !$this->loggedUser) {?> translate('Welcome on Syj.')?>
-translate('To create a journey, just click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner')?> +translate('To create a journey, just press "start a route" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner')?>
translate('When you have finished a path, press "save", button.')?> -- 2.39.2 From fb6f0c87d1bc16db8a2a444e421be44b2e813c18 Mon Sep 17 00:00:00 2001 From: arno Date: Mon, 20 Sep 2010 11:28:52 +0200 Subject: [PATCH 16/16] fixes welcome popup wording (bis) --- application/languages/lang_en.po | 9 ++++----- application/languages/lang_fr.po | 6 +++--- application/views/scripts/idx/index.phtml | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/application/languages/lang_en.po b/application/languages/lang_en.po index e12aa17..ddd2a01 100644 --- a/application/languages/lang_en.po +++ b/application/languages/lang_en.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-19 20:54+0200\n" +"POT-Creation-Date: 2010-09-20 11:26+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -55,13 +55,12 @@ msgid "Welcome on Syj." msgstr "Welcome on Syj." #: application/views/scripts/idx/index.phtml:17 -#, fuzzy msgid "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" -msgstr "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" +msgstr "To create a journey, just press \"start a route\" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner" #: application/views/scripts/idx/index.phtml:19 -msgid "When you have finished a path, press \"save\", button." -msgstr "When you have finished a path, press \"save\", button." +msgid "When you have finished a path, press \"create\", button." +msgstr "When you have finished a path, press \"create\", button." #: application/views/scripts/idx/index.phtml:25 msgid "route length" diff --git a/application/languages/lang_fr.po b/application/languages/lang_fr.po index 12bbc60..0e5c9f0 100644 --- a/application/languages/lang_fr.po +++ b/application/languages/lang_fr.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: syj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2010-09-19 20:54+0200\n" +"POT-Creation-Date: 2010-09-20 11:26+0200\n" "PO-Revision-Date: \n" "Last-Translator: arno \n" "Language-Team: arno \n" @@ -59,8 +59,8 @@ msgid "To create a journey, just press \"start a route\" button msgstr "Pour créer un trajet, pressez simplement le bouton \"commencer un itinéraire\" puis cliquez sur la carte pour ajouter des points à votre tracé. Vous pouvez zoomer et bouger la carte avec les boutons en haut à gauche." #: application/views/scripts/idx/index.phtml:19 -msgid "When you have finished a path, press \"save\", button." -msgstr "Lorsque vous avez fini votre tracé, pressez le bouton \"enregistrer\"." +msgid "When you have finished a path, press \"create\", button." +msgstr "Lorsque vous avez fini votre tracé, pressez le bouton \"créer\"." #: application/views/scripts/idx/index.phtml:25 msgid "route length" diff --git a/application/views/scripts/idx/index.phtml b/application/views/scripts/idx/index.phtml index c4222f4..a98f1d2 100644 --- a/application/views/scripts/idx/index.phtml +++ b/application/views/scripts/idx/index.phtml @@ -16,7 +16,7 @@
translate('To create a journey, just press "start a route" button, then click on the map to add points to your route. You can zoom and move the map with the controls in the top left corner')?>
-translate('When you have finished a path, press "save", button.')?> +translate('When you have finished a path, press "create", button.')?> -- 2.39.2