]> source.dussan.org Git - redmine.git/commitdiff
Default configuration data can now be loaded from the administration screen.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 5 Jan 2008 11:33:49 +0000 (11:33 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 5 Jan 2008 11:33:49 +0000 (11:33 +0000)
A message is automatically displayed on this screen if roles, trackers,... have not been configured yet.
The rake task is still available and the data loading code is wrapped in a transaction.

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1040 e93f8b46-1217-0410-a6f0-8f06a7374b81

26 files changed:
app/controllers/admin_controller.rb
app/views/admin/_no_data.rhtml [new file with mode: 0644]
app/views/admin/index.rhtml
doc/INSTALL
lang/bg.yml
lang/cs.yml
lang/de.yml
lang/en.yml
lang/es.yml
lang/fr.yml
lang/he.yml
lang/it.yml
lang/ja.yml
lang/ko.yml
lang/nl.yml
lang/pl.yml
lang/pt-br.yml
lang/pt.yml
lang/ro.yml
lang/ru.yml
lang/sr.yml
lang/sv.yml
lang/zh-tw.yml
lang/zh.yml
lib/redmine/default_data/loader.rb
test/functional/admin_controller_test.rb

index 0f8eb32a58fe47d3075e34babe84d745c51d543e..9e6a228225b740ee891c430b6e63b36728a28e81 100644 (file)
@@ -22,7 +22,8 @@ class AdminController < ApplicationController
   helper :sort
   include SortHelper   
 
-  def index    
+  def index
+    @no_configuration_data = Redmine::DefaultData::Loader::no_data?
   end
        
   def projects
@@ -56,6 +57,20 @@ class AdminController < ApplicationController
     end
   end
   
+  # Loads the default configuration
+  # (roles, trackers, statuses, workflow, enumerations)
+  def default_configuration
+    if request.post?
+      begin
+        Redmine::DefaultData::Loader::load(params[:lang])
+        flash[:notice] = l(:notice_default_data_loaded)
+      rescue Exception => e
+        flash[:error] = l(:error_can_t_load_default_data, e.message)
+      end
+    end
+    redirect_to :action => 'index'
+  end
+  
   def test_email
     raise_delivery_errors = ActionMailer::Base.raise_delivery_errors
     # Force ActionMailer to raise delivery errors so we can catch it
diff --git a/app/views/admin/_no_data.rhtml b/app/views/admin/_no_data.rhtml
new file mode 100644 (file)
index 0000000..5d52dc0
--- /dev/null
@@ -0,0 +1,8 @@
+<div class="nodata">
+<% form_tag({:action => 'default_configuration'}) do %>
+    <%= simple_format(l(:text_no_configuration_data)) %>
+    <p><%= l(:field_language) %>:
+    <%= select_tag 'lang', options_for_select(lang_options_for_select(false), current_language.to_s) %>
+    <%= submit_tag l(:text_load_default_configuration) %></p>
+<% end %>
+</div>
index 1c6cbdee5f1353ee7bbe9ef7d94696d5ddebcbf4..2291c5415b755ff75b1b87e7295719eb781966d3 100644 (file)
@@ -1,5 +1,7 @@
 <h2><%=l(:label_administration)%></h2>
 
+<%= render :partial => 'no_data' if @no_configuration_data %>
+
 <p class="icon22 icon22-projects">
 <%= link_to l(:label_project_plural), :controller => 'admin', :action => 'projects' %> |
 <%= link_to l(:label_new), :controller => 'projects', :action => 'add' %>
index 5eb4d5c68dab24dff2fb26b50ab0b612ee3c43f6..035e97cab8bd5a0823ba47ffefff60fe026d150a 100644 (file)
@@ -33,24 +33,18 @@ Supported databases:
    rake db:migrate RAILS_ENV="production"
    It will create tables and an administrator account.
 
-5. Insert default configuration data in the database:
-   rake redmine:load_default_data RAILS_ENV="production"
-   It will load default roles, trackers, statuses, workflows and enumerations.
-   This step is optional but *highly recommended*
-
-6. Test the installation by running WEBrick web server:
+5. Test the installation by running WEBrick web server:
    ruby script/server -e production   
   
    Once WEBrick has started, point your browser to http://localhost:3000/
    You should now see the application welcome page
 
-7. Use default administrator account to log in:
+6. Use default administrator account to log in:
    login: admin
    password: admin
    
-8. You can go to "Admin -> Settings" to modify application settings.
-
-9. Setup Apache or Lighttpd with fastcgi for best performance.
+7. Go to "Administration" to load the default configuration data (roles, 
+   trackers, statuses, workflow) and adjust application settings
 
 
 == SMTP server Configuration
index 916e892689cd85d9ab6e0b89903eb918b3e264a1..eeb6ef80b9d93f6cfab7c08a5fab5df250935193 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index db2055f6cf2452fd41854d8603696336546299a9..e99fe061bc28beef67738cd09b1ece544b80ca27 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 2d4a95c2db09fc4ea8f56cb8e5646b0005c8bc4e..cd4e222aed59dfd8d3d68491a26c131c55433cf9 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 2419b05dba8f3aad9dc69bfca59c5eb67f5fd9b1..7a1a2622fe2106f0c550f2806ddf951b6e569ea4 100644 (file)
@@ -76,6 +76,9 @@ notice_feeds_access_key_reseted: Your RSS access key was reseted.
 notice_failed_to_save_issues: "Failed to save %d issue(s) on %d selected: %s."
 notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit."
 notice_account_pending: "Your account was created and is now pending administrator approval."
+notice_default_data_loaded: Default configuration successfully loaded.
+
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
 
 mail_subject_lost_password: Your Redmine password
 mail_body_lost_password: 'To change your Redmine password, click on the following link:'
@@ -527,6 +530,8 @@ text_issue_category_destroy_question: Some issues (%d) are assigned to this cate
 text_issue_category_destroy_assignments: Remove category assignments
 text_issue_category_reassign_to: Reassign issues to this category
 text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)."
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+text_load_default_configuration: Load the default configuration
 
 default_role_manager: Manager
 default_role_developper: Developer
index b7aaf1b39f28eceade6cad1bc69ed56564809b71..bae2955862e6a963dd91247bc91e4676640cb2e8 100644 (file)
@@ -556,3 +556,7 @@ field_searchable: Incluir en las búsquedas
 label_display_per_page: 'Por página: %s'
 setting_per_page_options: Objetos por página
 label_age: Edad
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 394865a215e50e24336358355b37adf039a4e9cf..d47feceb2dfcab0d5801098ed941762db42e8e2f 100644 (file)
@@ -72,10 +72,13 @@ notice_scm_error: "L'entrée et/ou la révision demandée n'existe pas dans le d
 notice_not_authorized: "Vous n'êtes pas autorisés à accéder à cette page."
 notice_email_sent: "Un email a été envoyé à %s"
 notice_email_error: "Erreur lors de l'envoi de l'email (%s)"
-notice_feeds_access_key_reseted: Votre clé d'accès aux flux RSS a été réinitialisée.
+notice_feeds_access_key_reseted: "Votre clé d'accès aux flux RSS a été réinitialisée."
 notice_failed_to_save_issues: "%d demande(s) sur les %d sélectionnées n'ont pas pu être mise(s) à jour: %s."
 notice_no_issue_selected: "Aucune demande sélectionnée ! Cochez les demandes que vous voulez mettre à jour."
 notice_account_pending: "Votre compte a été créé et attend l'approbation de l'administrateur."
+notice_default_data_loaded: Paramétrage par défaut chargé avec succès.
+
+error_can_t_load_default_data: "Une erreur s'est produite lors du chargement du paramétrage: %s"
 
 mail_subject_lost_password: Votre mot de passe redMine
 mail_body_lost_password: 'Pour changer votre mot de passe Redmine, cliquez sur le lien suivant:'
@@ -527,6 +530,8 @@ text_issue_category_destroy_question: Des demandes (%d) sont affectées à cette
 text_issue_category_destroy_assignments: N'affecter les demandes à aucune autre catégorie
 text_issue_category_reassign_to: Réaffecter les demandes à cette catégorie
 text_user_mail_option: "Pour les projets non sélectionnés, vous recevrez seulement des notifications pour ce que vous surveillez ou à quoi vous participez (exemple: demandes dont vous êtes l'auteur ou la personne assignée)."
+text_no_configuration_data: "Les rôles, trackers, statuts et le workflow ne sont pas encore paramétrés.\nIl est vivement recommandé de charger le paramétrage par defaut. Vous pourrez le modifier une fois chargé."
+text_load_default_configuration: Charger le paramétrage par défaut
 
 default_role_manager: Manager
 default_role_developper: Développeur
index 322b10b7c7c1b044d1d3fe85aba0b589a22b5db6..e2277dc3dde43fff1dab842dc2f83023973097da 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 561215f78094efa81dab824da477a87ebae5be5c..709f4177448d45b74e264847961f4f291690b00b 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index eb30edb263e4eab5a6ea8a88cdd145cd4fb53ac1..286fb59719f71e6653e17722bd8fb5de0d634d60 100644 (file)
@@ -554,3 +554,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index d0e03b364fa7f5953b9bd522798cb7d93fb30a03..52c9b5431fdcb96c1e66536842198eed3c89b946 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 74eff69ea1579b33a22fd86ddf0cb339f7324fc6..43e1704a4c0affad2667f15fef1509fee2623170 100644 (file)
@@ -554,3 +554,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index f1513ac9209eac7b8cc0c80f5711816a64c5ed2b..77ae6bb66b0a9d4e006d2ad6838854c10d0b9b5c 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 33719d11b9a68a3057c6deff9549a7fbc61100b1..55e8b3faea0088ba2fd8d5ee794b173acd6796f7 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'\r
 setting_per_page_options: Objects per page options\r
 label_age: Age\r
+notice_default_data_loaded: Default configuration successfully loaded.\r
+text_load_default_configuration: Load the default configuration\r
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."\r
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"\r
index c042589e3974539113bd24ec46331d59471fcb60..0a5661997ff994a2a7c2af38e814083da999dd69 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index e615472ad82a0e897f8b72efd19346de3ab12e81..1381adba9e27e42eb4ed69374f5632bd318a6747 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index d40379788ad040300fc259a7da925562ff591a2f..b293dc309850fb91c4cbe88a0a246d38e4ba999a 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 18e97d4440c1b77a585b1ea0b56a4f4c7d2bb8f7..c842ec43886f03623fde8c68a0695d9e59be3e54 100644 (file)
@@ -554,3 +554,7 @@ field_searchable: Searchable
 label_display_per_page: 'Po stranici: %s'
 setting_per_page_options: Objekata po stranici opcija
 label_age: Starost
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index dd4117115376bd96eab1724f765e3f7261c2c9e1..85fb19bcb03dd61e9e35a6f65e5eeef5262c2909 100644 (file)
@@ -554,3 +554,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 889f86a1c03ea7f0953443112638c1f400f64a3b..719a2e868bf547945eb8378f9da5f16f82834aec 100644 (file)
@@ -553,3 +553,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index c758f5490029b2e18b0189e0963e78a39487a62e..05134751f76cd66b0b3811bae0a33ae2dbb34451 100644 (file)
@@ -556,3 +556,7 @@ field_searchable: Searchable
 label_display_per_page: 'Per page: %s'
 setting_per_page_options: Objects per page options
 label_age: Age
+notice_default_data_loaded: Default configuration successfully loaded.
+text_load_default_configuration: Load the default configuration
+text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded."
+error_can_t_load_default_data: "Default configuration could not be loaded: %s"
index 10521910436a8276d1a38696f489639a135a7cb8..0abb5572a647cc135e836fae86f8b386a4c7c8a5 100644 (file)
@@ -38,19 +38,41 @@ module Redmine
           raise DataAlreadyLoaded.new("Some configuration data is already loaded.") unless no_data?
           set_language_if_valid(lang)
           
-          # Roles
-          manager = Role.create! :name => l(:default_role_manager), 
-                                 :position => 1
-          manager.permissions = manager.setable_permissions.collect {|p| p.name}
-          manager.save!
-          
-          developper = Role.create! :name => l(:default_role_developper), 
-                                    :position => 2, 
-                                    :permissions => [:manage_versions, 
-                                                    :manage_categories,
-                                                    :add_issues,
-                                                    :edit_issues,
-                                                    :manage_issue_relations,
+          Role.transaction do
+            # Roles
+            manager = Role.create! :name => l(:default_role_manager), 
+                                   :position => 1
+            manager.permissions = manager.setable_permissions.collect {|p| p.name}
+            manager.save!
+            
+            developper = Role.create! :name => l(:default_role_developper), 
+                                      :position => 2, 
+                                      :permissions => [:manage_versions, 
+                                                      :manage_categories,
+                                                      :add_issues,
+                                                      :edit_issues,
+                                                      :manage_issue_relations,
+                                                      :add_issue_notes,
+                                                      :change_issue_status,
+                                                      :save_queries,
+                                                      :view_gantt,
+                                                      :view_calendar,
+                                                      :log_time,
+                                                      :view_time_entries,
+                                                      :comment_news,
+                                                      :view_documents,
+                                                      :view_wiki_pages,
+                                                      :edit_wiki_pages,
+                                                      :delete_wiki_pages,
+                                                      :add_messages,
+                                                      :view_files,
+                                                      :manage_files,
+                                                      :browse_repository,
+                                                      :view_changesets]
+            
+            reporter = Role.create! :name => l(:default_role_reporter),
+                                    :position => 3,
+                                    :permissions => [:add_issues,
                                                     :add_issue_notes,
                                                     :change_issue_status,
                                                     :save_queries,
@@ -61,108 +83,87 @@ module Redmine
                                                     :comment_news,
                                                     :view_documents,
                                                     :view_wiki_pages,
-                                                    :edit_wiki_pages,
-                                                    :delete_wiki_pages,
                                                     :add_messages,
                                                     :view_files,
-                                                    :manage_files,
                                                     :browse_repository,
                                                     :view_changesets]
+                        
+            Role.non_member.update_attribute :permissions, [:add_issues,
+                                                            :add_issue_notes,
+                                                            :change_issue_status,
+                                                            :save_queries,
+                                                            :view_gantt,
+                                                            :view_calendar,
+                                                            :view_time_entries,
+                                                            :comment_news,
+                                                            :view_documents,
+                                                            :view_wiki_pages,
+                                                            :add_messages,
+                                                            :view_files,
+                                                            :browse_repository,
+                                                            :view_changesets]
           
-          reporter = Role.create! :name => l(:default_role_reporter),
-                                  :position => 3,
-                                  :permissions => [:add_issues,
-                                                  :add_issue_notes,
-                                                  :change_issue_status,
-                                                  :save_queries,
-                                                  :view_gantt,
-                                                  :view_calendar,
-                                                  :log_time,
-                                                  :view_time_entries,
-                                                  :comment_news,
-                                                  :view_documents,
-                                                  :view_wiki_pages,
-                                                  :add_messages,
-                                                  :view_files,
-                                                  :browse_repository,
-                                                  :view_changesets]
-                      
-          Role.non_member.update_attribute :permissions, [:add_issues,
-                                                          :add_issue_notes,
-                                                          :change_issue_status,
-                                                          :save_queries,
-                                                          :view_gantt,
-                                                          :view_calendar,
-                                                          :view_time_entries,
-                                                          :comment_news,
-                                                          :view_documents,
-                                                          :view_wiki_pages,
-                                                          :add_messages,
-                                                          :view_files,
-                                                          :browse_repository,
-                                                          :view_changesets]
-        
-          Role.anonymous.update_attribute :permissions, [:view_gantt,
-                                                         :view_calendar,
-                                                         :view_time_entries,
-                                                         :view_documents,
-                                                         :view_wiki_pages,
-                                                         :view_files,
-                                                         :browse_repository,
-                                                         :view_changesets]
-                                                           
-          # Trackers
-          Tracker.create!(:name => l(:default_tracker_bug),     :is_in_chlog => true,  :is_in_roadmap => false, :position => 1)
-          Tracker.create!(:name => l(:default_tracker_feature), :is_in_chlog => true,  :is_in_roadmap => true,  :position => 2)
-          Tracker.create!(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3)
-          
-          # Issue statuses
-          new       = IssueStatus.create!(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1)
-          assigned  = IssueStatus.create!(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :position => 2)
-          resolved  = IssueStatus.create!(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3)
-          feedback  = IssueStatus.create!(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4)
-          closed    = IssueStatus.create!(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5)
-          rejected  = IssueStatus.create!(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6)
-          
-          # Workflow
-          Tracker.find(:all).each { |t|
-            IssueStatus.find(:all).each { |os|
-              IssueStatus.find(:all).each { |ns|
-                Workflow.create!(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
-              }        
-            }      
-          }
+            Role.anonymous.update_attribute :permissions, [:view_gantt,
+                                                           :view_calendar,
+                                                           :view_time_entries,
+                                                           :view_documents,
+                                                           :view_wiki_pages,
+                                                           :view_files,
+                                                           :browse_repository,
+                                                           :view_changesets]
+                                                             
+            # Trackers
+            Tracker.create!(:name => l(:default_tracker_bug),     :is_in_chlog => true,  :is_in_roadmap => false, :position => 1)
+            Tracker.create!(:name => l(:default_tracker_feature), :is_in_chlog => true,  :is_in_roadmap => true,  :position => 2)
+            Tracker.create!(:name => l(:default_tracker_support), :is_in_chlog => false, :is_in_roadmap => false, :position => 3)
+            
+            # Issue statuses
+            new       = IssueStatus.create!(:name => l(:default_issue_status_new), :is_closed => false, :is_default => true, :position => 1)
+            assigned  = IssueStatus.create!(:name => l(:default_issue_status_assigned), :is_closed => false, :is_default => false, :position => 2)
+            resolved  = IssueStatus.create!(:name => l(:default_issue_status_resolved), :is_closed => false, :is_default => false, :position => 3)
+            feedback  = IssueStatus.create!(:name => l(:default_issue_status_feedback), :is_closed => false, :is_default => false, :position => 4)
+            closed    = IssueStatus.create!(:name => l(:default_issue_status_closed), :is_closed => true, :is_default => false, :position => 5)
+            rejected  = IssueStatus.create!(:name => l(:default_issue_status_rejected), :is_closed => true, :is_default => false, :position => 6)
+            
+            # Workflow
+            Tracker.find(:all).each { |t|
+              IssueStatus.find(:all).each { |os|
+                IssueStatus.find(:all).each { |ns|
+                  Workflow.create!(:tracker_id => t.id, :role_id => manager.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+                }        
+              }      
+            }
+            
+            Tracker.find(:all).each { |t|
+              [new, assigned, resolved, feedback].each { |os|
+                [assigned, resolved, feedback, closed].each { |ns|
+                  Workflow.create!(:tracker_id => t.id, :role_id => developper.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+                }        
+              }      
+            }
+            
+            Tracker.find(:all).each { |t|
+              [new, assigned, resolved, feedback].each { |os|
+                [closed].each { |ns|
+                  Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
+                }        
+              }
+              Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
+            }
           
-          Tracker.find(:all).each { |t|
-            [new, assigned, resolved, feedback].each { |os|
-              [assigned, resolved, feedback, closed].each { |ns|
-                Workflow.create!(:tracker_id => t.id, :role_id => developper.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
-              }        
-            }      
-          }
+            # Enumerations
+            Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_user), :position => 1)
+            Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_tech), :position => 2)
           
-          Tracker.find(:all).each { |t|
-            [new, assigned, resolved, feedback].each { |os|
-              [closed].each { |ns|
-                Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => os.id, :new_status_id => ns.id) unless os == ns
-              }        
-            }
-            Workflow.create!(:tracker_id => t.id, :role_id => reporter.id, :old_status_id => resolved.id, :new_status_id => feedback.id)
-          }
-        
-          # Enumerations
-          Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_user), :position => 1)
-          Enumeration.create!(:opt => "DCAT", :name => l(:default_doc_category_tech), :position => 2)
-        
-          Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_low), :position => 1)
-          Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_normal), :position => 2, :is_default => true)
-          Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_high), :position => 3)
-          Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_urgent), :position => 4)
-          Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_immediate), :position => 5)
-        
-          Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_design), :position => 1)
-          Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_development), :position => 2)
+            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_low), :position => 1)
+            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_normal), :position => 2, :is_default => true)
+            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_high), :position => 3)
+            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_urgent), :position => 4)
+            Enumeration.create!(:opt => "IPRI", :name => l(:default_priority_immediate), :position => 5)
           
+            Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_design), :position => 1)
+            Enumeration.create!(:opt => "ACTI", :name => l(:default_activity_development), :position => 2)
+          end
           true
         end
       end
index d49fe2dda50e95cc23edd6e2a43e33335564a155..742c1f6bb3016a3ced34795409c25ec65df3402c 100644 (file)
@@ -22,7 +22,7 @@ require 'admin_controller'
 class AdminController; def rescue_action(e) raise e end; end
 
 class AdminControllerTest < Test::Unit::TestCase
-  fixtures :projects, :users
+  fixtures :projects, :users, :roles
   
   def setup
     @controller = AdminController.new
@@ -32,6 +32,25 @@ class AdminControllerTest < Test::Unit::TestCase
     @request.session[:user_id] = 1 # admin
   end
   
+  def test_index
+    get :index
+    assert_no_tag :tag => 'div',
+                  :attributes => { :class => /nodata/ }
+  end
+  
+  def test_index_with_no_configuration_data
+    delete_configuration_data
+    get :index
+    assert_tag :tag => 'div',
+               :attributes => { :class => /nodata/ }
+  end
+  
+  def test_load_default_configuration_data
+    delete_configuration_data
+    post :default_configuration, :lang => 'fr'
+    assert IssueStatus.find_by_name('Nouveau')
+  end
+  
   def test_get_mail_options
     get :mail_options
     assert_response :success
@@ -58,4 +77,11 @@ class AdminControllerTest < Test::Unit::TestCase
     assert_response :success
     assert_template 'info'
   end
+  
+  def delete_configuration_data
+    Role.delete_all('builtin = 0')
+    Tracker.delete_all
+    IssueStatus.delete_all
+    Enumeration.delete_all
+  end
 end