diff options
| author | Marc Florisson | 2014-05-22 14:00:32 +0200 |
|---|---|---|
| committer | Marc Florisson | 2014-05-22 14:00:32 +0200 |
| commit | 21b05c1fd97c4b204dce4bc9268823604db3eabc (patch) | |
| tree | d381b7e377b18088efc9e649fb806d9a2650fe63 | |
| parent | f3dc45b3f62e55cf1d060ab67c2fdaea6443b13c (diff) | |
| parent | 02d82ddb60ed40b380800b9a04f907c582c5e42f (diff) | |
| download | chouette-core-21b05c1fd97c4b204dce4bc9268823604db3eabc.tar.bz2 | |
Merge branch 'master' into fix_stop_point_on_route
44 files changed, 233 insertions, 138 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index d89dfe232..1f1a54c73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,15 +1,41 @@ -# V2.2.0 (en cours) +# Version 2.4.0 (en recette) +* Corrections d'anomalies + * L'Import GTFS n'importe pas les fichiers avec marqueurs BOM (Mantis 21260) + * L'Import GTFS n'accepte pas des routes sans colonne agencyId (Mantis 22665) + * L'Export GTFS sort en erreur sur objet à exporter incomplêt (Mantis 24484) + * L'Export CSV sort un message inexploitable sur informations incomplètes (Mantis 24485) + * L'import NeTEx n'importe pas les ITL (Mantis 20889) + * L'ajout de nouvelles dates et périodes d'un calendrier ne propose pas l'assitant de saisie de date (Mantis 24440) + * Le format de date n'est pas correct en saisie (Mantis 23913) + * La modification de dates ou de périodes n'actualise pas les limites du calendrier (Mantis 23801) + * Mieux expliquer les espaces de données dans l'aide (Mantis 22286 et 22811) + * Créer un calendrier avec des dates ou périodes vides, crée un calendrier vide (Mantis 24425) + * Remplacer détruire par supprimer dans les confirmation de suppression (Mantis 24414) + * Protection des listes avec filtre si la page courante est au delà du nombre de pages (Mantis 20954) + * L'export n'accepte plus une liste de réseaux (Mantis 26438) + * L'insertion d'un arrêt dans une séquence perturbe les courses existantes (Mantis 23800) + * Import Neptune : erreur de sauvegarde si le mode de transport est manquant (Mantis 26702) -* Refonte des fonctions d'import et validation +# Version 2.3.0 (18/04/14) +* Migration technique de chouette (Java) + * passage sous spring 4 + * passage sous hibernate 4 + * utilisation des annotations JPA -# V2.1.1 (20/12/13) +# Version 2.2.0 (06/03/14) +* Refonte des fonctions d'import et validation + * suppression de la validation de fichiers + * mise en place de la validation durant l'import + * ajout de la validation sur les objets en base + * redéfinition des tests + * refonte des IHM de résultat +# Version 2.1.1 (20/12/13) * Ajout de Google Analytics * Clonage de courses * les calendiers de la course initiale sont reportés dans les copies -# V2.1.0 (15/07/13) - +# Version 2.1.0 (15/07/13) * suppression des coordonnées projetées en base * les données sont produites à la volée pour l'export et l'affichage à partir de la projection fixée dans le référentiel * consolidation de l'import GTFS @@ -24,29 +50,25 @@ * ajout des fonds niveau cadastre et orthophoto * affichage de l'orthophoto IGN par défaut lorsque la clé IGN est présente -# V2.0.3 (27/05/13) - +# Version 2.0.3 (27/05/13) * Ajout des imports/export NeTex * Fonctionnement sous windows * Prise en compte de grandes quantités de calendriers. * Reprise des logs d'import Neptune * Intégration des cartes du géoportail (IGN) -# V2.0.2 (28/01/13) - +# Version 2.0.2 (28/01/13) * Ajout de l'import GTFS (expérimental, ne traite pas les stations) * Ajout d'API Rest pour accéder aux données depuis une autre application -# V2.0.1 (17/12/12) - +# Version 2.0.1 (17/12/12) * Ajout de la gestion des groupes de lignes * Ajout de la gestion des accès et des relations arrêts-accès * Ajout d'une vue calendaire des calendriers d'application * Améliorations ergonomiques et cartographiques * L'import Neptune accepte les principaux formats d'encodage : ISO-8859-1, UTF-8, ... -# V2.0.0 (10/09/12) - +# Version 2.0.0 (10/09/12) * refonte de l'interface graphique * ajout d'une gestion simplifiée d'utilisateurs : * ajout d'une notion d'organisation @@ -52,8 +52,10 @@ gem 'google-analytics-rails' gem 'will_paginate', '~> 3.0' gem 'ransack' gem 'squeel' -#gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git' -gem 'ninoxe', '0.1.6' +#gem 'ninoxe', :git => 'https://github.com/afimb/ninoxe.git' +#gem 'ninoxe',:path => '~/workspace/chouette/ninoxe' +gem 'ninoxe', '~> 1.0.1' + gem 'acts_as_list', '0.1.6' gem "acts_as_tree-1.8", '1.1.0', :require => "acts_as_tree" gem "active_enum" diff --git a/Gemfile.lock b/Gemfile.lock index aa4645c7c..6b4792a8e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -113,8 +113,8 @@ GEM ffi (1.0.11-java) ffi-geos (0.4.0) ffi (>= 1.0.0) - font-awesome-sass (4.0.2) - sass-rails (>= 3.1.1) + font-awesome-sass (4.1.0) + sass (~> 3.2) foreigner (1.6.0) activerecord (>= 3.0.0) formtastic (2.2.1) @@ -176,7 +176,7 @@ GEM modernizr-rails (2.0.6) morrisjs-rails (0.4.3) railties (> 3.1, < 5) - multi_json (1.8.2) + multi_json (1.10.0) net-scp (1.0.4) net-ssh (>= 1.99.1) net-sftp (2.0.5) @@ -184,7 +184,7 @@ GEM net-ssh (2.6.2) net-ssh-gateway (1.1.0) net-ssh (>= 1.99.1) - ninoxe (0.1.6) + ninoxe (1.0.1) activerecord (>= 3.1.3, < 3.2.14) acts_as_list (~> 0.1.6) foreigner (= 1.6.0) @@ -203,7 +203,7 @@ GEM rack (1.4.5) rack-cache (1.2) rack (>= 0.4) - rack-ssl (1.3.3) + rack-ssl (1.3.4) rack rack-test (0.6.2) rack (>= 1.0) @@ -227,7 +227,7 @@ GEM rake (>= 0.8.7) rdoc (~> 3.4) thor (>= 0.14.6, < 2.0) - rake (10.1.0) + rake (10.3.2) ransack (0.7.0) actionpack (~> 3.0) activerecord (~> 3.0) @@ -269,8 +269,8 @@ GEM rspec-mocks (~> 2.13.0) ruby-graphviz (1.0.9) rubyzip (0.9.9) - sass (3.2.1) - sass-rails (3.2.5) + sass (3.3.7) + sass-rails (3.2.6) railties (~> 3.2.0) sass (>= 3.1.10) tilt (~> 1.3) @@ -295,7 +295,7 @@ GEM therubyrhino (2.0.1) therubyrhino_jar (>= 1.7.3) therubyrhino_jar (1.7.4) - thor (0.18.1) + thor (0.19.1) tilt (1.4.1) treetop (1.4.15) polyglot @@ -314,7 +314,7 @@ GEM warden (1.2.1) rack (>= 1.0) websocket (1.0.7) - will_paginate (3.0.3) + will_paginate (3.0.5) xpath (0.1.4) nokogiri (~> 1.3) @@ -360,7 +360,7 @@ DEPENDENCIES map_layers (= 0.0.4) modernizr-rails (~> 2.0.6) morrisjs-rails - ninoxe (= 0.1.6) + ninoxe (~> 1.0.1) pg (~> 0.11.0) rabl rails (= 3.2.6) diff --git a/LICENSE.md b/LICENSE.md index f69527a70..d1c72b47c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -8,13 +8,13 @@ contributeurs / contributors : * [Cityway](http://www.cityway.fr) -Ce logiciel est un programme informatique servant à créer et à échanger des données de modélisation d'offres de transport en commun en respectant les préconisations de la norme NEPTUNE [ref AFNOR en cour] . +Ce logiciel est un programme informatique servant à créer et à échanger des données de modélisation d'offres de transport en commun en respectant les préconisations de la norme NEPTUNE [ref AFNOR PR NF P99-506](http://www.chouette.mobi/spip.php?rubrique61) . Ce logiciel est régi par la licence CeCILL-B soumise au droit français et respectant les principes de diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous les conditions de la licence CeCILL-B telle que diffusée par le CEA, le CNRS et l'INRIA sur le site [http://www.cecill.info](http://www.cecill.info). En contrepartie de l'accessibilité au code source et des droits de copie, de modification et de redistribution accordés par cette licence, il n'est offert aux utilisateurs qu'une garantie limitée. Pour les mêmes raisons, seule une responsabilité restreinte pèse sur l'auteur du programme, le titulaire des droits patrimoniaux et les concédants successifs. -A cet égard l'attention de l'utilisateur est attirée sur les risques associés au chargement, à l'utilisation, à la modification et/ou au développement et à la reproduction du logiciel par l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve donc à des développeurs et des professionnels avertis possédant des connaissances informatiques approfondies. Les utilisateurs sont donc invités à charger et tester l'adéquation du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes et ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. +A cet égard l'attention de l'utilisateur est attirée sur les risques associés au chargement, à l'utilisation, à la modification et/ou au développement et à la reproduction du logiciel par l'utilisateur étant donné sa spécificité de logiciel libre, qui peut le rendre complexe à manipuler et qui le réserve donc à des développeurs et des professionnels avertis possédant des connaissances informatiques approfondies. Les utilisateurs sont donc invités à charger et tester l'adéquation du logiciel à leurs besoins dans des conditions permettant d'assurer la sécurité de leurs systèmes et ou de leurs données et, plus généralement, à l'utiliser et l'exploiter dans les mêmes conditions de sécurité. Le fait que vous puissiez accéder à cet en-tête signifie que vous avez pris connaissance de la licence CeCILL-B, et que vous en avez accepté les termes. @@ -10,12 +10,17 @@ Chouette2 is an open source web project in Ruby/Rails to edit and view transport It uses java library from another git project to import and export various transport data [chouette](http://github.com/afimb/chouette) -Feel free to test and access to the demonstration web site at [http://demo.chouette.mobi](http://demo.chouette.mobi/chouette2/users/sign_in). Two types of access are granted : +Feel free to test and access to the free SaaS web site at [http://appli.chouette.mobi](http://appli.chouette.mobi/chouette2/users/sign_in). Two types of access are granted : * A demo organisation with a set of data * login : demo@chouette.mobi * password : chouette * Create your own organisation : Must follow the link "Sign up" ("S'inscrire") +Release Notes +------------- + +The release notes can be found in [CHANGELOG](./CHANGELOG.md) file + Requirements ------------ @@ -38,7 +43,6 @@ rvm --default use 1.9.3-p448 ``` On Debian/Ubuntu/Kubuntu OS : assume depot contains the correct version - ```sh sudo apt-get install postgresql sudo apt-get install libpq-dev @@ -53,16 +57,15 @@ sudo apt-get install make Installation ------------ - Install chouette-gui-command to import, export and validate transport offer, Assume Linux user is myuser and its group mygroup (that user is the one who starts Rails server) ```sh sudo mkdir -p /usr/local/opt/chouette-command/ sudo chown -R myuser:mygroup /usr/local/opt/chouette-command/ cd /usr/local/opt/chouette-command/ -wget http://maven.chouette.cityway.fr/fr/certu/chouette/chouette-gui-command/2.2.0/chouette-gui-command-2.2.0.zip -unzip chouette-gui-command-2.2.0.zip -cd chouette-cmd_2.2.0 +wget http://maven.chouette.cityway.fr/fr/certu/chouette/chouette-gui-command/2.4.0/chouette-gui-command-2.4.0.zip +unzip chouette-gui-command-2.4.0.zip +cd chouette-cmd_2.4.0 sudo chmod a+w . ``` @@ -71,7 +74,7 @@ Install web application Get git source code : ```sh cd -git clone -b V2_2 git://github.com/afimb/chouette2 +git clone -b V2_4 git://github.com/afimb/chouette2 cd chouette2 ``` Download gem librairies diff --git a/app/assets/javascripts/plugins/jquery.ui.datepicker-i18n.js b/app/assets/javascripts/plugins/jquery.ui.datepicker-i18n.js index b7748a77a..ef2bfb631 100644 --- a/app/assets/javascripts/plugins/jquery.ui.datepicker-i18n.js +++ b/app/assets/javascripts/plugins/jquery.ui.datepicker-i18n.js @@ -47,7 +47,7 @@ jQuery(function($){ { $(element).datepicker( { - dateFormat: "dd/mm/y", + dateFormat: "dd/mm/yy", dayNamesShort: $.datepicker.regional[ $('html').attr('lang') ].dayNamesShort, dayNames: $.datepicker.regional[ $('html').attr('lang') ].dayNames, monthNamesShort: $.datepicker.regional[ $('html').attr('lang') ].monthNamesShort, @@ -55,7 +55,7 @@ jQuery(function($){ } ); if ($(element).val().indexOf('/') >= 0) { - $(element).datepicker("setDate", $.datepicker.parseDate('dd/mm/y', $(element).val() ) ); + $(element).datepicker("setDate", $.datepicker.parseDate('dd/mm/yy', $(element).val() ) ); } else { @@ -68,7 +68,7 @@ jQuery(function($){ $this.find("input[type='date']").each( function(index, element) { - var date = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate('dd/mm/y', $(element).val() ) ); + var date = $.datepicker.formatDate('yy-mm-dd', $.datepicker.parseDate('dd/mm/yy', $(element).val() ) ); $(element).val(date); } ); diff --git a/app/assets/javascripts/time_tables.js.coffee b/app/assets/javascripts/time_tables.js.coffee index d347ddc67..c74811632 100644 --- a/app/assets/javascripts/time_tables.js.coffee +++ b/app/assets/javascripts/time_tables.js.coffee @@ -42,5 +42,7 @@ jQuery -> $('#periods_content').bind('insertion-callback',after_inserts) $('#dates_content').bind('insertion-callback',after_inserts) #after_inserts() + + $(document).on('cocoon:after-insert',after_inserts) $(document).ready(bind_after_inserts) if $('.time_tables').length > 0 diff --git a/app/controllers/access_points_controller.rb b/app/controllers/access_points_controller.rb index d26595a85..6203cefab 100644 --- a/app/controllers/access_points_controller.rb +++ b/app/controllers/access_points_controller.rb @@ -8,9 +8,16 @@ class AccessPointsController < ChouetteController respond_to :html, :kml, :xml, :json - def index + def index request.format.kml? ? @per_page = nil : @per_page = 12 - index! + + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end end def show diff --git a/app/controllers/companies_controller.rb b/app/controllers/companies_controller.rb index a895c4f61..27f0f9235 100644 --- a/app/controllers/companies_controller.rb +++ b/app/controllers/companies_controller.rb @@ -6,11 +6,16 @@ class CompaniesController < ChouetteController belongs_to :referential, :parent_class => Referential - # def update - # update! do |success, failure| - # failure.html { redirect_to referential_companies_path(@resource, @referential) } - # end - # end + def index + + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end protected def collection diff --git a/app/controllers/connection_links_controller.rb b/app/controllers/connection_links_controller.rb index cbb8346c6..6f225af1f 100644 --- a/app/controllers/connection_links_controller.rb +++ b/app/controllers/connection_links_controller.rb @@ -9,6 +9,16 @@ class ConnectionLinksController < ChouetteController respond_to :html, :xml, :json respond_to :kml, :only => :show + def index + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + def show @map = ConnectionLinkMap.new(resource).with_helpers(self) show! diff --git a/app/controllers/group_of_lines_controller.rb b/app/controllers/group_of_lines_controller.rb index c758ad16d..a38b22c10 100644 --- a/app/controllers/group_of_lines_controller.rb +++ b/app/controllers/group_of_lines_controller.rb @@ -13,6 +13,16 @@ class GroupOfLinesController < ChouetteController show! end + def index + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + def name_filter respond_to do |format| format.json { render :json => filtered_group_of_lines_maps} diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb index acae8348e..effb0deba 100644 --- a/app/controllers/lines_controller.rb +++ b/app/controllers/lines_controller.rb @@ -7,6 +7,17 @@ class LinesController < ChouetteController belongs_to :referential + def index + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + + def show @map = LineMap.new(resource).with_helpers(self) @routes = @line.routes @@ -17,7 +28,7 @@ class LinesController < ChouetteController # overwrite inherited resources to use delete instead of destroy # foreign keys will propagate deletion) def destroy_resource(object) - object.delete + object.delete end def destroy_all diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index aabdadaf4..b911ab603 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -12,6 +12,16 @@ class NetworksController < ChouetteController show! end + def index + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + protected def collection diff --git a/app/controllers/stop_areas_controller.rb b/app/controllers/stop_areas_controller.rb index a3e2ab921..d54d888e4 100644 --- a/app/controllers/stop_areas_controller.rb +++ b/app/controllers/stop_areas_controller.rb @@ -1,10 +1,11 @@ +# -*- coding: utf-8 -*- class StopAreasController < ChouetteController defaults :resource_class => Chouette::StopArea belongs_to :referential do belongs_to :line, :parent_class => Chouette::Line, :optional => true, :polymorphic => true belongs_to :network, :parent_class => Chouette::Network, :optional => true, :polymorphic => true - belongs_to :connection_link, :parent_class => Chouette::Network, :optional => true, :polymorphic => true + belongs_to :connection_link, :parent_class => Chouette::ConnectionLink, :optional => true, :polymorphic => true end respond_to :html, :kml, :xml, :json @@ -40,9 +41,16 @@ class StopAreasController < ChouetteController @detail_access_links = stop_area.detail_access_link_matrix end - def index + def index request.format.kml? ? @per_page = nil : @per_page = 12 - index! + + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end end def show diff --git a/app/controllers/time_tables_controller.rb b/app/controllers/time_tables_controller.rb index a9f799e9d..00109aa76 100644 --- a/app/controllers/time_tables_controller.rb +++ b/app/controllers/time_tables_controller.rb @@ -18,6 +18,19 @@ class TimeTablesController < ChouetteController end + def index + request.format.kml? ? @per_page = nil : @per_page = 12 + + index! do |format| + format.html { + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + + protected def filtered_time_tables_maps diff --git a/app/controllers/vehicle_journeys_controller.rb b/app/controllers/vehicle_journeys_controller.rb index 1aec533c1..848fda507 100644 --- a/app/controllers/vehicle_journeys_controller.rb +++ b/app/controllers/vehicle_journeys_controller.rb @@ -30,20 +30,31 @@ class VehicleJourneysController < ChouetteController update!(:alert => t('activerecord.errors.models.vehicle_journey.invalid_times')) end + def index + index! do |format| + format.html { + @matrix ||= matrix + if collection.out_of_bounds? + redirect_to params.merge(:page => 1) + end + } + end + end + + # overwrite inherited resources to use delete instead of destroy # foreign keys will propagate deletion) def destroy_resource(object) - object.delete + object.delete end protected alias_method :vehicle_journey, :resource - + def collection @q = parent.sorted_vehicle_journeys.search(params[:q]) - @vehicle_journeys ||= @q.result.order( "vehicle_journey_at_stops.departure_time").paginate(:page => params[:page], :per_page => 8) - @matrix ||= matrix + @vehicle_journeys ||= @q.result.order( "vehicle_journey_at_stops.departure_time").paginate(:page => params[:page], :per_page => 8) end def matrix diff --git a/app/helpers/search_helper.rb b/app/helpers/search_helper.rb index eaeac99d8..f4976ea53 100644 --- a/app/helpers/search_helper.rb +++ b/app/helpers/search_helper.rb @@ -5,7 +5,7 @@ module SearchHelper if is_current html_options[:class] = [html_options[:class], "current"].compact.join(" ") end - link_to name, params.deep_merge("q" => search), html_options + link_to name, params.deep_merge("q" => search,:page => 1), html_options end end diff --git a/app/models/api/v1/api_key.rb b/app/models/api/v1/api_key.rb index 2c1b9ba5f..7390db232 100644 --- a/app/models/api/v1/api_key.rb +++ b/app/models/api/v1/api_key.rb @@ -9,6 +9,7 @@ module Api end def eql?(other) + return false unless other.respond_to?( :token) other.token == self.token end @@ -21,7 +22,7 @@ module Api private def generate_access_token begin - self.token = "#{referential.id}-#{SecureRandom.hex}" + self.token = "#{referential.id}-#{SecureRandom.hex}" end while self.class.exists?(:token => self.token) end end diff --git a/app/views/help/dataspaces.textile b/app/views/help/dataspaces.textile index bb376fe6a..21f846b04 100644 --- a/app/views/help/dataspaces.textile +++ b/app/views/help/dataspaces.textile @@ -10,7 +10,7 @@ p. Un *espace de données* est le lieu de stockage d'un ensemble de données de h3. Attributs - Nom := nom de l'espace de données -- Code := code de l'espace de données +- Code := code de l'espace de données (voir implémentation) - Préfixe Neptune := préfixe utilisé par défaut lors la génération de nouveaux identifiants Neptune - Projection géographique := référentiel de projection des coordonnées cartographiques en complément du WGS84 - Fuseau horaire := fuseau horaire applicable pour les horaires des courses. (cf "Tz_database":http://fr.wikipedia.org/wiki/Tz_database) @@ -18,7 +18,14 @@ h3. Attributs h3. Implémentation -p. L'espace de données est concrétisé dans la base de données par un schéma au sens SQL portant le nom défini par l'attribut code, les attributs sont enregistrés dans la table REFERENTIALS du schema 'public' +p. L'espace de données est concrétisé dans la base de données par un schéma au sens SQL portant le nom défini par l'attribut code. + +p. Les attributs de l'espace de données sont enregistrés dans la table REFERENTIALS du schema 'public' + +p. Le préfixe Neptune est utilisé dans la génération des identifiants de l'ensemble des objets du modèle; sa modification n'a d'effet que sur les objets créés après. + +p. La projection géographique permet un affichae et l'export des coordonnées selon un système géographique secondaires; les coordonnées de ce système ne sont pas conservés dans la base. p. Les limitations de PosgreSQL imposent qu'un nom de schéma soit en minuscule et commence par une lettre; les préfixes 'pg_' ainsi que 'public' sont réservés. +p. Les noms et codes des espaces de données sont uniques quelque soit l'organisation; une erreur de doublon peut donc arriver si une autre organisation a déjà utilisé le même terme. diff --git a/app/views/help/index.textile b/app/views/help/index.textile index 403b4da3f..83a3bc8c9 100644 --- a/app/views/help/index.textile +++ b/app/views/help/index.textile @@ -3,7 +3,7 @@ layout: default title: Chouette v2 --- -Version 2.2.0 +Version 2.4.0 h3. Logiciel libre propriété de : @@ -24,6 +24,30 @@ A cet égard l'attention de l'utilisateur est attirée sur les risques associé h3. Notes de version +h4. V2.4.0 + +* Corrections des anomalies suivantes : +** L'Import GTFS n'importe pas les fichiers avec marqueurs BOM (Mantis 21260) +** L'Import GTFS n'accepte pas des routes sans colonne agencyId (Mantis 22665) +** L'Export GTFS sort en erreur sur objet à exporter incomplêt (Mantis 24484) +** L'Export CSV sort un message inexploitable sur informations incomplètes (Mantis 24485) +** L'import NeTEx n'importe pas les ITL (Mantis 20889) +** L'ajout de nouvelles dates et périodes d'un calendrier ne propose pas l'assitant de saisie de date (Mantis 24440) +** Le format de date n'est pas correct en saisie (Mantis 23913) +** La modification de dates ou de périodes n'actualise pas les limites du calendrier (Mantis 23801) +** Mieux expliquer les espaces de données dans l'aide (Mantis 22286 et 22811) +** Créer un calendrier avec des dates ou périodes vides, crée un calendrier vide (Mantis 24425) +** Remplacer détruire par supprimer dans les confirmation de suppression (Mantis 24414) +** Protection des listes avec filtre si la page courante est au delà du nombre de pages (Mantis 20954) +** L'export n'accepte plus une liste de réseaux (Mantis 26438) +** L'insertion d'un arrêt dans une séquence perturbe les courses existantes (Mantis 23800) + +h4. V2.3.0 + +* Migration technique des frameworks JAVA +** Spring 4 +** Hibernate 4 + h4. V2.2.0 * Refonte de la validation @@ -43,7 +67,7 @@ h4. V2.1.0 * ajout d'un export KML : ** lignes ** séquences d'arrêt -** arrêts (une chouche par type) +** arrêts (une couche par type) ** missions ** correspondances ** accès et liaisons accès-arrêt diff --git a/app/views/lines/_form.erb b/app/views/lines/_form.erb index f44c038d7..5705d7b1e 100644 --- a/app/views/lines/_form.erb +++ b/app/views/lines/_form.erb @@ -29,6 +29,9 @@ prePopulate: $('#group_of_line_tokens').data('pre'), minChars: 3, preventDuplicates: true, + hintText: '<%= t('search_hint') %>', + noResultsText: '<%= t('no_result_text') %>', + searchingText: '<%= t('searching_term') %>' }); }); </script> diff --git a/config/database.yml b/config/database.yml index adec960b4..1685c484f 100644 --- a/config/database.yml +++ b/config/database.yml @@ -9,6 +9,7 @@ development: database: chouette_dev encoding: utf8 host: localhost + port: 5432 username: chouette password: chouette @@ -20,6 +21,7 @@ test: database: chouette_test encoding: utf8 host: localhost + port: 5432 username: chouette password: chouette @@ -28,5 +30,6 @@ production: database: chouette2 encoding: utf8 host: localhost + port: 5432 username: chouette password: chouette diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb index 41cedd594..a4519644b 100644 --- a/config/deploy/staging.rb +++ b/config/deploy/staging.rb @@ -3,4 +3,4 @@ set :deploy_via, :copy set :copy_cache, true set :copy_via, :scp set :copy_exclude, ".git/*" -set :branch, "V2_1_0" +set :branch, "V2_3_0" diff --git a/config/environment.rb b/config/environment.rb index 296970388..5353fe344 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -6,4 +6,4 @@ require File.expand_path('../application', __FILE__) ChouetteIhm::Application.initialize! # Fix version -APP_VERSION = '2.2.0' +APP_VERSION = '2.4.0' diff --git a/config/environments/production.rb b/config/environments/production.rb index 9e08d4145..31148daf4 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -76,7 +76,7 @@ ChouetteIhm::Application.configure do # paths for external resources config.to_prepare do Devise::Mailer.layout "mailer" - Chouette::Command.command = "/usr/local/opt/chouette-command/chouette-cmd_2.2.0/chouette" + Chouette::Command.command = "/usr/local/opt/chouette-command/chouette-cmd_2.4.0/chouette" ImportTask.root = "/var/lib/chouette/imports" Export.root = "/var/lib/chouette/exports" end diff --git a/config/initializers/array_ext.rb b/config/initializers/array_ext.rb deleted file mode 100644 index 92cc22d12..000000000 --- a/config/initializers/array_ext.rb +++ /dev/null @@ -1,3 +0,0 @@ -Rails.configuration.after_initialize do - require 'array_ext' -end diff --git a/config/locales/access_links.yml b/config/locales/access_links.yml index 3c85585b4..b714bfad4 100644 --- a/config/locales/access_links.yml +++ b/config/locales/access_links.yml @@ -50,7 +50,7 @@ fr: new: "Ajouter un lien" edit: "Modifier ce lien" destroy: "Supprimer ce lien" - destroy_confirm: "Etes vous sûr de détruire ce lien ?" + destroy_confirm: "Etes vous sûr de supprimer ce lien ?" new: title_access_point_to_stop_area: "Créer un lien depuis l'accès %{access_point} vers l'arrêt %{stop_area}" title_stop_area_to_access_point: "Créer un lien depuis l'arrêt %{stop_area} vers l'accès %{access_point}" diff --git a/config/locales/access_points.yml b/config/locales/access_points.yml index caaa55eaf..470a6914b 100644 --- a/config/locales/access_points.yml +++ b/config/locales/access_points.yml @@ -64,7 +64,7 @@ fr: new: "Ajouter un accès" edit: "Modifier cet accès" destroy: "Supprimer cet accès" - destroy_confirm: "Etes vous sûr de détruire cet accès ?" + destroy_confirm: "Etes vous sûr de supprimer cet accès ?" new: title: "Ajouter un accès" edit: diff --git a/config/locales/companies.yml b/config/locales/companies.yml index 620b721ce..3585f3ff5 100644 --- a/config/locales/companies.yml +++ b/config/locales/companies.yml @@ -48,7 +48,7 @@ fr: new: "Ajouter un transporteur" edit: "Modifier ce transporteur" destroy: "Supprimer ce transporteur" - destroy_confirm: "Etes vous sûr de détruire ce transporteur ?" + destroy_confirm: "Etes vous sûr de supprimer ce transporteur ?" new: title: "Ajouter un transporteur" edit: diff --git a/config/locales/connection_links.yml b/config/locales/connection_links.yml index 4a008199b..4fe76b36b 100644 --- a/config/locales/connection_links.yml +++ b/config/locales/connection_links.yml @@ -68,7 +68,7 @@ fr: new: "Ajouter une correspondance" edit: "Modifier cette correspondance" destroy: "Supprimer cette correspondance" - destroy_confirm: "Etes vous sûr de détruire cette correspondance ?" + destroy_confirm: "Etes vous sûr de supprimer cette correspondance ?" select_areas: "Modifier les départs/arrivées" new: title: "Ajouter une correspondance" diff --git a/config/locales/exports.yml b/config/locales/exports.yml index 471345cc9..d9efdd2d6 100644 --- a/config/locales/exports.yml +++ b/config/locales/exports.yml @@ -104,7 +104,7 @@ fr: actions: new: "Nouvel export" destroy: "Supprimer cet export" - destroy_confirm: "Etes vous sûr de détruire cet export ?" + destroy_confirm: "Etes vous sûr de supprimer cet export ?" download: "Télécharger" new: title: "Nouvel export" diff --git a/config/locales/group_of_lines.yml b/config/locales/group_of_lines.yml index 963dc769e..13e356cf2 100644 --- a/config/locales/group_of_lines.yml +++ b/config/locales/group_of_lines.yml @@ -43,7 +43,7 @@ fr: new: "Ajouter un groupe de lignes" edit: "Modifier ce groupe de lignes" destroy: "Supprimer ce groupe de lignes" - destroy_confirm: "Etes vous sûr de détruire ce groupe de lignes ?" + destroy_confirm: "Etes vous sûr de supprimer ce groupe de lignes ?" new: title: "Ajouter un groupe de lignes" edit: diff --git a/config/locales/import_tasks.yml b/config/locales/import_tasks.yml index 94134188f..7ae667830 100644 --- a/config/locales/import_tasks.yml +++ b/config/locales/import_tasks.yml @@ -93,7 +93,7 @@ fr: actions: new: "Nouvel import" destroy: "Supprimer cet import" - destroy_confirm: "Etes vous sûr de détruire cet import ?" + destroy_confirm: "Etes vous sûr de supprimer cet import ?" new: title: "Nouvel import" index: diff --git a/config/locales/lines.yml b/config/locales/lines.yml index d54367358..2fd55d4bc 100644 --- a/config/locales/lines.yml +++ b/config/locales/lines.yml @@ -66,7 +66,7 @@ fr: new: "Ajouter une ligne" edit: "Modifier cette ligne" destroy: "Supprimer cette ligne" - destroy_confirm: "Etes vous sûr de détruire cette ligne ?" + destroy_confirm: "Etes vous sûr de supprimer cette ligne ?" import: "Importer des lignes" export_kml: "Export KML de la ligne" export_kml_all: "Export KML des lignes" diff --git a/config/locales/networks.yml b/config/locales/networks.yml index 8387730eb..6bae0667d 100644 --- a/config/locales/networks.yml +++ b/config/locales/networks.yml @@ -47,7 +47,7 @@ fr: new: "Ajouter un réseau" edit: "Modifier ce réseau" destroy: "Supprimer ce réseau" - destroy_confirm: "Etes vous sûr de détruire ce réseau ?" + destroy_confirm: "Etes vous sûr de supprimer ce réseau ?" new: title: "Ajouter un réseau" edit: diff --git a/config/locales/routes.yml b/config/locales/routes.yml index f39331944..27243bd87 100644 --- a/config/locales/routes.yml +++ b/config/locales/routes.yml @@ -65,7 +65,7 @@ fr: new: "Ajouter une séquence d'arrêts" edit: "Modifier cette séquence d'arrêts" destroy: "Supprimer cette séquence d'arrêts" - destroy_confirm: "Etes vous sûr de détruire cette séquence d'arrêts ?" + destroy_confirm: "Etes vous sûr de supprimer cette séquence d'arrêts ?" export_kml: "Export KML de la séquence d'arrêts" export_kml_all: "Export KML des séquences d'arrêts" new: diff --git a/config/locales/rule_parameter_sets.yml b/config/locales/rule_parameter_sets.yml index 421322f07..e3626fc04 100644 --- a/config/locales/rule_parameter_sets.yml +++ b/config/locales/rule_parameter_sets.yml @@ -61,7 +61,7 @@ fr: edit: "Modifier ce jeu de paramètres" index: "Jeux de paramètres" destroy: "Supprimer ce jeu de paramètres" - destroy_confirm: "Etes vous sûr de détruire ce jeu de paramètres ?" + destroy_confirm: "Etes vous sûr de supprimer ce jeu de paramètres ?" new: title: "Ajouter un jeu de paramètres" form: diff --git a/config/locales/stop_areas.yml b/config/locales/stop_areas.yml index a16626404..1c0214210 100644 --- a/config/locales/stop_areas.yml +++ b/config/locales/stop_areas.yml @@ -103,7 +103,7 @@ fr: new: "Ajouter un arrêt" edit: "Modifier cet arrêt" destroy: "Supprimer cet arrêt" - destroy_confirm: "Etes vous sûr de détruire cet arrêt ?" + destroy_confirm: "Etes vous sûr de supprimer cet arrêt ?" select_parent: "Gérer le parent" add_children: "Gérer les fils" add_routing_lines: "Gérer les lignes de l'ITL" diff --git a/config/locales/time_tables.yml b/config/locales/time_tables.yml index cc9865e56..5e54bff90 100644 --- a/config/locales/time_tables.yml +++ b/config/locales/time_tables.yml @@ -81,9 +81,9 @@ fr: new: "Ajouter un calendrier" edit: "Modifier ce calendrier" destroy: "Supprimer ce calendrier" - destroy_confirm: "Etes vous sûr de détruire ce calendrier ?" - destroy_date_confirm: "Etes vous sûr de détruire cette date ?" - destroy_period_confirm: "Etes vous sûr de détruire cette période ?" + destroy_confirm: "Etes vous sûr de supprimer ce calendrier ?" + destroy_date_confirm: "Etes vous sûr de supprimer cette date ?" + destroy_period_confirm: "Etes vous sûr de supprimer cette période ?" add_period: "Ajouter une période" add_date: "Ajouter une date" new: diff --git a/config/locales/users.yml b/config/locales/users.yml index 7de65d406..61c75a412 100644 --- a/config/locales/users.yml +++ b/config/locales/users.yml @@ -25,7 +25,7 @@ fr: new: "Ajouter un utilisateur" edit: "Modifier cet utilisateur" destroy: "Supprimer cet utilisateur" - destroy_confirm: "Etes vous sûr de détruire cet utilisateur ?" + destroy_confirm: "Etes vous sûr de supprimer cet utilisateur ?" new: title: "Ajouter un utilisateur" edit: diff --git a/config/locales/vehicle_journeys.yml b/config/locales/vehicle_journeys.yml index fa52c423b..fb13c8399 100644 --- a/config/locales/vehicle_journeys.yml +++ b/config/locales/vehicle_journeys.yml @@ -89,7 +89,7 @@ fr: new: "Ajouter une course" edit: "Modifier cette course" destroy: "Supprimer cette course" - destroy_confirm: "Etes vous sûr de détruire cette course ?" + destroy_confirm: "Etes vous sûr de supprimer cette course ?" new: title: "Ajouter une course" edit: diff --git a/lib/array_ext.rb b/lib/array_ext.rb deleted file mode 100644 index 438d92ee2..000000000 --- a/lib/array_ext.rb +++ /dev/null @@ -1,54 +0,0 @@ -class Array - - def order_by(order) - attribute, direction = order.first - - self.sort{ |a,b| - sa, sb = a.send(attribute.to_sym).to_s, b.send(attribute.to_sym).to_s - if ((sa.downcase <=> sb.downcase) == 0) - then sa <=> sb - else - na, nb = self.class.check_regexp(sa, sb) - na <=> nb - end - }.tap do |items| - items.reverse! if direction.to_sym == :desc - end - end - - private - # TODO : Puts in a gem this development - def self.check_regexp(sa, sb) - regexp = /(^|\D+)(\d+|(\D$))/ - ma, mb = multireg(regexp,sa), self.multireg(regexp,sb) - it = 0 - equal = 0 - ret = ["",""] - numeric = /(\d+)/ - while (it < [ma.size,mb.size].min) and (equal==0) - if (ma[it] and mb[it]) and (ma[it][1] and mb[it][1]) \ - and (numeric.match ma[it][0] and numeric.match mb[it][0]) - l = [ma[it][2].size,mb[it][2].size].max - ret = [self.format(ma[it], l), self.format(mb[it], l)] - else - ret = [ma[it][0].downcase, mb[it][0].downcase] - end - equal = ret[0] <=> ret[1] - it+=1 - end - return ret[0], ret[1] - end - - def self.multireg rgpx, str - result = [] - while rgpx.match str - result.push rgpx.match(str) - str = rgpx.match(str).post_match - end - result - end - - def self.format(match_data, length) - match_data[1].gsub("_", "").downcase + ("%0#{length}d" % match_data[2].to_i) - end -end diff --git a/lib/tasks/demo.rake b/lib/tasks/demo.rake index 8e9a53ac0..d78637c96 100644 --- a/lib/tasks/demo.rake +++ b/lib/tasks/demo.rake @@ -14,7 +14,7 @@ namespace :demo do referential = organisation.referentials.create( :name => "Tatrobus", :slug => "tatrobus", :prefix => "TAT") resource = Rack::Test::UploadedFile.new( Rails.application.config.demo_data, 'application/zip', false) - import_instance = referential.import_tasks.create( :resources => resource, :referential_id => referential.id) + import_instance = referential.import_tasks.create( :resources => resource, :referential_id => referential.id, :user_name => user.name, :no_save => false, :user_id => user.id) import_instance.import puts "Restore demo environment complete" end diff --git a/spec/requests/stop_points_spec.rb b/spec/requests/stop_points_spec.rb index f2805263d..263711497 100644 --- a/spec/requests/stop_points_spec.rb +++ b/spec/requests/stop_points_spec.rb @@ -20,7 +20,7 @@ describe "StopPoints" do end describe "from route's page, go to new stop point page" do it "display route's stop points" do - + pending visit referential_line_route_path(referential,line,route) click_link "Gérer les arrêts de la séquence" click_link "Ajouter un arrêt à la séquence" |
