diff options
| author | Xinhui | 2017-08-18 14:35:30 +0200 | 
|---|---|---|
| committer | Xinhui | 2017-08-18 14:38:09 +0200 | 
| commit | dba01bf83eed749a96a55bb751245568cd476152 (patch) | |
| tree | 254b6b8aa22847fb3b2fc8c73bba522417b5744f | |
| parent | 30b746b8b238c9ba22e972556e94950adb3f5e8b (diff) | |
| download | chouette-core-dba01bf83eed749a96a55bb751245568cd476152.tar.bz2 | |
Refactoring api_keys views with table_builder
| -rw-r--r-- | app/controllers/api_keys_controller.rb | 32 | ||||
| -rw-r--r-- | app/decorators/api_key_decorator.rb | 30 | ||||
| -rw-r--r-- | app/views/api_keys/edit.html.slim | 3 | ||||
| -rw-r--r-- | app/views/api_keys/index.html.slim | 24 | ||||
| -rw-r--r-- | app/views/api_keys/new.html.slim | 3 | ||||
| -rw-r--r-- | app/views/api_keys/show.html.slim | 7 | ||||
| -rw-r--r-- | config/locales/api_keys.en.yml | 6 | ||||
| -rw-r--r-- | config/locales/api_keys.fr.yml | 2 | ||||
| -rw-r--r-- | config/routes.rb | 2 | 
9 files changed, 87 insertions, 22 deletions
| diff --git a/app/controllers/api_keys_controller.rb b/app/controllers/api_keys_controller.rb index 35a84da87..bd225818b 100644 --- a/app/controllers/api_keys_controller.rb +++ b/app/controllers/api_keys_controller.rb @@ -1,22 +1,32 @@ -class ApiKeysController < ChouetteController -  defaults :resource_class => Api::V1::ApiKey - -  belongs_to :referential +class ApiKeysController < BreadcrumbController +  defaults resource_class: Api::V1::ApiKey    def create -    create! { referential_path(@referential) } +    @api_key = Api::V1::ApiKey.new(api_key_params.merge(organisation: current_organisation)) +    create! { organisation_api_key_path(resource) } +  end + +  def index +    @api_keys = decorate_api_keys(current_organisation.api_keys.paginate(page: params[:page]))    end +    def update -    update! { referential_path(@referential) } +    update! { organisation_api_key_path(resource) }    end +    def destroy -    destroy! { referential_path(@referential) } +    destroy! { organisation_api_keys_path }    end    private    def api_key_params -    params.require(:api_key).permit( :name ) -  end   -   -end +    params.require(:api_key).permit(:name, :referential_id) +  end +  def decorate_api_keys(api_keys) +    ModelDecorator.decorate( +      api_keys, +      with: ApiKeyDecorator, +    ) +  end +end diff --git a/app/decorators/api_key_decorator.rb b/app/decorators/api_key_decorator.rb new file mode 100644 index 000000000..def3a6a01 --- /dev/null +++ b/app/decorators/api_key_decorator.rb @@ -0,0 +1,30 @@ +class ApiKeyDecorator < Draper::Decorator +  decorates Api::V1::ApiKey +  delegate_all + + +  def action_links +    links = [] + +    links << Link.new( +      content: h.t('api_keys.actions.show'), +      href: h.organisation_api_key_path(object), +    ) + +    links << Link.new( +      content: h.t('api_keys.actions.edit'), +      href: h.edit_organisation_api_key_path(object), +    ) + +    if h.policy(object).destroy? +      links << Link.new( +        content: h.destroy_link_content, +        href: h.organisation_api_key_path(object), +        method: :delete, +        data: { confirm: h.t('api_keys.actions.destroy_confirm') } +      ) +    end + +    links +  end +end diff --git a/app/views/api_keys/edit.html.slim b/app/views/api_keys/edit.html.slim index 110f0775d..e47deddf7 100644 --- a/app/views/api_keys/edit.html.slim +++ b/app/views/api_keys/edit.html.slim @@ -1,3 +1,2 @@  = title_tag t('api_keys.edit.title') - -== render 'form'
\ No newline at end of file +== render partial: 'form', locals: {action_url: organisation_api_key_path} diff --git a/app/views/api_keys/index.html.slim b/app/views/api_keys/index.html.slim new file mode 100644 index 000000000..fc8d95c7a --- /dev/null +++ b/app/views/api_keys/index.html.slim @@ -0,0 +1,24 @@ +- header_params = ['map-marker', +                   t('.title'), +                   ''] +- header_params << link_to(t('actions.add'), new_organisation_api_key_path, class: 'btn btn-default')  if policy(Api::V1::ApiKey).create? += pageheader(*header_params) do + + +- if @api_keys.any? +  .row +    .col-lg-12 +      = table_builder_2 @api_keys, +        [ \ +          TableBuilderHelper::Column.new( \ +            key: :name, \ +            attribute: 'name' \ +          ), \ +          TableBuilderHelper::Column.new( \ +            key: :token, \ +            attribute: 'token' \ +          ), \ +        ], +        cls: 'table has-search' + +      = new_pagination @api_keys, 'pull-right' diff --git a/app/views/api_keys/new.html.slim b/app/views/api_keys/new.html.slim index f7b1dd99b..291c9f8a6 100644 --- a/app/views/api_keys/new.html.slim +++ b/app/views/api_keys/new.html.slim @@ -1,3 +1,2 @@  = title_tag t('api_keys.new.title') - -== render "form"
\ No newline at end of file +== render partial: 'form', locals: {action_url: organisation_api_keys_path} diff --git a/app/views/api_keys/show.html.slim b/app/views/api_keys/show.html.slim index b65717408..de30ac125 100644 --- a/app/views/api_keys/show.html.slim +++ b/app/views/api_keys/show.html.slim @@ -12,7 +12,6 @@  - content_for :sidebar do    ul.actions -    li = link_to t('api_keys.actions.new'), new_referential_api_key_path(@referential), class: "add" -    li = link_to t('api_keys.actions.edit'), edit_referential_api_key_path(@referential, @api_key), class: "edit" -    li = link_to t('api_keys.actions.destroy'), referential_api_key_path(@referential, @api_key), :method => :delete,  :data => {:confirm =>  t('api_keys.actions.destroy_confirm')}, class: "remove" -    br
\ No newline at end of file +    li = link_to t('api_keys.actions.edit'), edit_organisation_api_key_path(@api_key), class: "edit" +    li = link_to t('api_keys.actions.destroy'), organisation_api_key_path(@api_key), :method => :delete,  :data => {:confirm =>  t('api_keys.actions.destroy_confirm')}, class: "remove" +    br diff --git a/config/locales/api_keys.en.yml b/config/locales/api_keys.en.yml index 221fa6eef..1480c8e55 100644 --- a/config/locales/api_keys.en.yml +++ b/config/locales/api_keys.en.yml @@ -7,12 +7,14 @@ en:        destroy_confirm: "Are you sure you want destroy this api key?"      show:        title: "Api key" +    index: +      title: Api key      new:        title: "Add a new api key"      edit:        title: "Update api key" -  activerecord:         -    models:         +  activerecord: +    models:        api_key: "Api Key"      attributes:        api_key: diff --git a/config/locales/api_keys.fr.yml b/config/locales/api_keys.fr.yml index 445367c72..20af91a49 100644 --- a/config/locales/api_keys.fr.yml +++ b/config/locales/api_keys.fr.yml @@ -7,6 +7,8 @@ fr:        destroy_confirm: "Etes vous sûr de vouloir détruire la clé d'accès API ?"      show:        title: "Clé d'accès API" +    index: +      title: Clé d'accès API      new:        title: "Ajouter une clé d'accès API"      edit: diff --git a/config/routes.rb b/config/routes.rb index 0ed401cf5..ea0eefd06 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -56,6 +56,7 @@ ChouetteIhm::Application.routes.draw do    end    resource :organisation, :only => [:show, :edit, :update] do +    resources :api_keys      resources :users      resources :rule_parameter_sets    end @@ -78,7 +79,6 @@ ChouetteIhm::Application.routes.draw do    end    resources :referentials, except: :index do -    resources :api_keys      resources :autocomplete_stop_areas, only: [:show, :index] do        get 'around', on: :member      end | 
