From: Tomas Sedovic <[email protected]>

This new page is capable of viewing/updating/creating new providers, so the
funtionality has been moved there.
---
 src/app/controllers/provider_controller.rb |   34 +++++++++++++++-
 src/app/views/provider/_providers.haml     |   19 +++++++--
 src/app/views/provider/show.haml           |   52 ++++++++++++++++++++------
 src/config/locales/en.yml                  |   13 ++++++
 src/config/navigation.rb                   |   56 ++++++++++++++--------------
 5 files changed, 126 insertions(+), 48 deletions(-)

diff --git a/src/app/controllers/provider_controller.rb 
b/src/app/controllers/provider_controller.rb
index af8c3f9..8f9fce3 100644
--- a/src/app/controllers/provider_controller.rb
+++ b/src/app/controllers/provider_controller.rb
@@ -21,20 +21,30 @@
 
 class ProviderController < ApplicationController
   before_filter :require_user
+  before_filter :load_providers
 
   def index
-    @providers = Provider.list_for_user(@current_user, 
Privilege::PROVIDER_VIEW)
   end
 
   def show
+    @providers = Provider.list_for_user(@current_user, 
Privilege::PROVIDER_VIEW)
     @provider = Provider.find(:first, :conditions => {:id => params[:id]})
     require_privilege(Privilege::PROVIDER_VIEW, @provider)
   end
 
+  def edit
+    @providers = Provider.list_for_user(@current_user, 
Privilege::PROVIDER_MODIFY)
+    @provider = Provider.find(:first, :conditions => {:id => params[:id]})
+    require_privilege(Privilege::PROVIDER_MODIFY, @provider)
+    render :show
+  end
+
   def new
     require_privilege(Privilege::PROVIDER_MODIFY)
+    @providers = Provider.list_for_user(@current_user, 
Privilege::PROVIDER_MODIFY)
     @provider = Provider.new(params[:provider])
     condormatic_classads_sync
+    render :show
   end
 
   def create
@@ -50,6 +60,20 @@ class ProviderController < ApplicationController
     condormatic_classads_sync
   end
 
+  def update
+    require_privilege(Privilege::PROVIDER_MODIFY)
+    @provider = Provider.find(:first, :conditions => {:id => 
params[:provider][:id]})
+    @provider.name = params[:provider][:name]
+
+    if @provider.save
+        flash[:notice] = "Provider updated."
+        redirect_to :action => "show", :id => @provider
+    else
+      render :action => "edit"
+    end
+    condormatic_classads_sync
+  end
+
   def destroy
     if request.post?
       @provider = Provider.find(params[:provider][:id])
@@ -73,8 +97,8 @@ class ProviderController < ApplicationController
   end
 
   def accounts
-     @provider = Provider.find(params[:id])
-     require_privilege(Privilege::ACCOUNT_VIEW, @provider)
+    @provider = Provider.find(:first, :conditions => {:id => params[:id]})
+    require_privilege(Privilege::ACCOUNT_VIEW, @provider)
   end
 
   def realms
@@ -88,6 +112,10 @@ class ProviderController < ApplicationController
   end
 
   def list
+  end
+
+  protected
+  def load_providers
     @providers = Provider.list_for_user(@current_user, 
Privilege::PROVIDER_VIEW)
   end
 end
diff --git a/src/app/views/provider/_providers.haml 
b/src/app/views/provider/_providers.haml
index 4b8008e..0fc755c 100644
--- a/src/app/views/provider/_providers.haml
+++ b/src/app/views/provider/_providers.haml
@@ -1,7 +1,16 @@
 %h2 Providers
 %ul#providers
-  - @providers.each do |provider|
-    %li
-      = link_to provider.name, {:controller => "provider", :action => "show", 
:id => provider }, :class => "providername"
-- if 
BasePermissionObject.general_permission_scope.has_privilege(@current_user, 
Privilege::PROVIDER_MODIFY)
-  = link_to "Add a provider", {:controller => "provider", :action => "new"}, 
:class => "actionlink"
+#providers_nav.grid_3
+  %dl
+    %dt
+      = t('provider.providers')
+    - @providers.each do |provider|
+      %dd
+        %span
+        - selected = 'selected' if @provider and (provider.id == @provider.id)
+        %a{ :href => url_for(:controller => 'provider', :action => 'show', :id 
=> provider), :class => selected }
+          = provider.name
+    - form_tag :controller => 'provider', :action => 'edit', :id => @provider 
do
+      = submit_tag t(:edit), :disabled => ('disabled' unless @provider and 
controller.action_name == 'show')
+    - form_tag({:controller => 'provider', :action => 'new'}, {:method => :get 
}) do
+      %input{ :type => 'submit', :value => t(:add), :disabled => ('disabled' 
unless @providers.length == 0) }
diff --git a/src/app/views/provider/show.haml b/src/app/views/provider/show.haml
index b3e0bd7..81726e7 100644
--- a/src/app/views/provider/show.haml
+++ b/src/app/views/provider/show.haml
@@ -1,12 +1,40 @@
-- content_for :scripts do
-  :javascript
-    $(document).ready(function() {
-      $("#provider-tabs").tabs();
-    });
-#provider-tabs
-  %ul
-    %li= link_to "Accounts",  {:action => "accounts", :id => @provider.id, 
:ajax => true}
-    %li= link_to "Realms",  {:action => "realms", :id => @provider.id, :ajax 
=> true }
-    - if has_view_perms?
-      %li= link_to "User access",  {:controller => "permissions", :action => 
"list", :provider_id => @provider.id, :ajax => true }
-    %li= link_to "Settings", {:action => "settings", :id => @provider.id, 
:ajax => true}
+- readonly = controller.action_name == 'show' ? true : false
+= render :partial => 'providers'
+#details.grid_13
+  = render_navigation(:level => 4)
+  - if controller.action_name == 'new'
+    - form_action = 'create'
+  - elsif controller.action_name == 'edit'
+    - form_action = 'update'
+  - form_tag :controller => :provider, :action => form_action do
+    %h2.first
+      = t('.provider_name')
+      - unless readonly
+        %span.required
+          *
+    %h2.second
+      = t('.provider_url')
+      - unless readonly
+        %span.required
+          *
+    .fieldGroup.clearfix
+      = text_field :provider, :name, :title => t('.provider_name'), :value => 
(@provider.name if @provider), :disabled => ('disabled' if 
controller.action_name == 'show')
+      = text_field :provider, :url, :title => t('.provider_url'), :class => 
'emailinput', :value => (@provider.url if @provider), :disabled => ('disabled' 
unless controller.action_name == 'new')
+      - if controller.action_name == 'edit':
+        = hidden_field :provider, :id, :value => @provider.id
+      %p
+        %span
+          (
+          %a{ :href => ''}<>
+            = t('.test_connection')
+          )
+    - unless readonly
+      %p.requirement
+        %span.required
+          *
+        \-
+        = t('.required_field')
+    - if controller.action_name == 'edit'
+      %input{ :type => 'submit', :value => t(:save), :name => 'save_provider', 
:id => 'save_provider' }
+    - elsif controller.action_name == 'new'
+      %input{ :type => 'submit', :value => t(:add), :name => 'add_provider', 
:id => 'add_provider' }
diff --git a/src/config/locales/en.yml b/src/config/locales/en.yml
index c435f00..3e6918c 100644
--- a/src/config/locales/en.yml
+++ b/src/config/locales/en.yml
@@ -39,6 +39,9 @@ en:
   launch_instance: Launch Instance
   help: Help
   continue: Continue
+  edit: Edit
+  add: Add
+  save: Save
   settings:
     index:
       general_settings: General Settings
@@ -55,3 +58,13 @@ en:
       define_services_desc: View, edit and define services that DeltaCloud 
will offer. These services will be mapped to individual providers based on 
their capabilities.
       permissions: Permissions
       permissions_desc: Create and edit User Treatments that are applied to 
users. Treatments pair together Roles with Categories of Instances, Pools and 
Templates. Manage the categories, and define and edit Roles. Roles group 
together sets of permissions that are relevant to Pools, Templates and 
Instances.
+  provider:
+    providers: PROVIDERS
+    show:
+      provider_name: Provider Name
+      provider_url: Provider URL
+      caution_alt_text: Caution
+      enter_correct_url_msg: Please enter a correct URL format.
+      test_connection: Test Connection
+      required_field: Required field.
+      caution_image: Caution
diff --git a/src/config/navigation.rb b/src/config/navigation.rb
index 17e06ed..88ce0ea 100644
--- a/src/config/navigation.rb
+++ b/src/config/navigation.rb
@@ -1,44 +1,44 @@
 SimpleNavigation::Configuration.run do |navigation|
   navigation.autogenerate_item_ids = false
   navigation.items do |first_level|
-    first_level.item :operation, t(:operation), '', :class => 'operation' do 
|second_level|
-      second_level.item :monitor, t(:monitor), '/dashboard'
-      second_level.item :browse_objects, t(:browse_objects), 
'/browse_objects', :class => 'disabled'
+    first_level.item :operation, t(:operation), '#', :class => 'operation' do 
|second_level|
+      second_level.item :monitor, t(:monitor), :controller => 'dashboard'
+      second_level.item :browse_objects, t(:browse_objects), '#', :class => 
'disabled'
     end
-    first_level.item :administration, t(:administration), '', :class => 
'administration' do |second_level|
-      second_level.item :system_settings, t(:system_settings), "/settings" do 
|third_level|
-        third_level.item :manage_providers, t(:manage_providers), "/provider" 
do |fourth_level|
-          fourth_level.item :provider_summary, t(:provider_summary), 
"/provider/show"
-          fourth_level.item :provider_accounts, t(:provider_accounts), 
"/provider/accounts"
+    first_level.item :administration, t(:administration), '#', :class => 
'administration' do |second_level|
+      second_level.item :system_settings, t(:system_settings), :controller => 
'settings' do |third_level|
+        third_level.item :manage_providers, t(:manage_providers), :controller 
=> 'provider' do |fourth_level|
+          fourth_level.item :provider_summary, t(:provider_summary), { 
:controller => 'provider', :action => 'show', :id => (@provider.id if 
@provider) }, :highlights_on => /\/provider\/(show|edit|new)/
+          fourth_level.item :provider_accounts, t(:provider_accounts), { 
:controller => 'provider', :action => 'accounts', :id => (@provider.id if 
@provider) }, :highlights_on => /\/provider\/accounts/
         end
-        third_level.item :self_service_settings, t(:self_service_settings), 
"/settings/self-service"
-        third_level.item :manage_users, t(:manage_users), "/users" do 
|fourth_level|
-          fourth_level.item :new_user, t(:new_user), '/account/edit'
-          fourth_level.item :edit_user, t(:edit_user), '/account/edit'
+        third_level.item :self_service_settings, t(:self_service_settings), 
:controller => 'settings', :action => 'self-service'
+        third_level.item :manage_users, t(:manage_users), :controller => 
'users' do |fourth_level|
+          fourth_level.item :new_user, t(:new_user), :controller => 'users', 
:action => 'new'
+          fourth_level.item :edit_user, t(:edit_user), :controller => 'users', 
:action => 'edit'
         end
       end
-      second_level.item :pools_and_zones, t(:pools_and_zones), '/pool' do 
|third_level|
-        third_level.item :new_pool, t(:new_pool), '/pool/new'
-        third_level.item :edit_pool, t(:edit_pool), '/pool/edit'
+      second_level.item :pools_and_zones, t(:pools_and_zones), :controller => 
'pool' do |third_level|
+        third_level.item :new_pool, t(:new_pool), :controller => 'pool', 
:action => 'new'
+        third_level.item :edit_pool, t(:edit_pool), :controller => 'pool', 
:action => 'edit'
       end
-      second_level.item :audit_report, t(:audit_report), '/audit_report', 
:class => 'disabled'
-      second_level.item :assistance_requests, t(:assistance_requests), 
'/assistance_requests', :class => 'disabled'
+      second_level.item :audit_report, t(:audit_report), '#', :class => 
'disabled'
+      second_level.item :assistance_requests, t(:assistance_requests), '#', 
:class => 'disabled'
     end
-    first_level.item :build, t(:build), '', :class => 'build' do |second_level|
-      second_level.item :templates, t(:templates), '/templates' do 
|third_level|
-        third_level.item :basic_template, t(:basic_template), '/templates/new' 
do |fourth_level|
-          fourth_level.item :browse_packages, t(:browse_packages), 
'/templates/packages'
+    first_level.item :build, t(:build), '#', :class => 'build' do 
|second_level|
+      second_level.item :templates, t(:templates), :controller => 'templates' 
do |third_level|
+        third_level.item :basic_template, t(:basic_template), :controller => 
'templates', :action => 'new' do |fourth_level|
+          fourth_level.item :browse_packages, t(:browse_packages), :controller 
=> 'templates', :action => 'packages'
         end
       end
-      second_level.item :grinds, t(:grinds), '/templates/builds'
-      second_level.item :images, t(:images), '/image/show'
+      second_level.item :grinds, t(:grinds), :controller => 'templates', 
:action => 'builds'
+      second_level.item :images, t(:images), :controller => 'image', :action 
=> 'show'
     end
-    first_level.item :runtime, t(:runtime), '', :class => 'runtime' do 
|second_level|
-      second_level.item :instance_management, t(:instance_management), 
'/instance' do |third_level|
-        third_level.item :instance_details, t(:instance_details), 
'/instance/show'
-        third_level.item :launch_instance, t(:launch_instance), '/instance/new'
+    first_level.item :runtime, t(:runtime), '#', :class => 'runtime' do 
|second_level|
+      second_level.item :instance_management, t(:instance_management), 
:controller => 'instance' do |third_level|
+        third_level.item :instance_details, t(:instance_details), :controller 
=> 'instance', :action => 'show'
+        third_level.item :launch_instance, t(:launch_instance), :controller => 
'instance', :action => 'new'
       end
     end
-    first_level.item :help, t(:help), '/help', :id => 'help'
+    first_level.item :help, t(:help), '#', :id => 'help'
   end
 end
-- 
1.7.2.3

_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to