From b1a527fc52b6ef9441c2eff68e3e4e5722d40710 Mon Sep 17 00:00:00 2001 From: Alexander Meindl Date: Sun, 28 Jan 2018 11:47:25 +0100 Subject: [PATCH] Cleanup routings --- .../messenger_settings_controller.rb | 34 ++++--------------- app/models/messenger.rb | 1 - app/models/messenger_setting.rb | 6 +--- app/views/messenger_settings/_show.html.slim | 8 ++--- config/routes.rb | 9 +++-- db/migrate/001_create_messenger_settings.rb | 2 -- db/migrate/002_add_default_mentions.rb | 2 -- db/migrate/003_add_private_settings.rb | 2 -- init.rb | 2 +- lib/redmine_messenger.rb | 2 -- lib/redmine_messenger/helpers.rb | 2 -- lib/redmine_messenger/hooks.rb | 2 -- .../patches/contact_patch.rb | 2 -- .../patches/db_entry_patch.rb | 2 -- lib/redmine_messenger/patches/issue_patch.rb | 2 -- .../patches/password_patch.rb | 2 -- .../patches/projects_helper_patch.rb | 3 -- .../patches/wiki_page_patch.rb | 2 -- test/integration/routing_test.rb | 14 ++++++++ 19 files changed, 31 insertions(+), 68 deletions(-) create mode 100644 test/integration/routing_test.rb diff --git a/app/controllers/messenger_settings_controller.rb b/app/controllers/messenger_settings_controller.rb index 7f810d0..0e06493 100644 --- a/app/controllers/messenger_settings_controller.rb +++ b/app/controllers/messenger_settings_controller.rb @@ -1,35 +1,15 @@ -# Redmine Messenger plugin for Redmine - class MessengerSettingsController < ApplicationController - layout 'base' + before_action :find_project_by_project_id + before_action :authorize - before_action :find_project, :authorize, :find_user - - def save + def update setting = MessengerSetting.find_or_create @project.id - begin - setting.transaction do - # setting.auto_preview_enabled = auto_preview_enabled - setting.assign_attributes(params[:setting]) - setting.save! - end + setting.assign_attributes(params[:setting]) + if setting.save flash[:notice] = l(:notice_successful_update) - rescue => e + else flash[:error] = 'Updating failed.' + e.message end - - redirect_to controller: 'projects', action: 'settings', id: @project, tab: 'messenger' - end - - private - - def find_project - @project = Project.find(params[:id]) - rescue ActiveRecord::RecordNotFound - render_404 - end - - def find_user - @user = User.current + redirect_to settings_project_path(@project, tab: 'messenger') end end diff --git a/app/models/messenger.rb b/app/models/messenger.rb index cf87fb4..42e263c 100644 --- a/app/models/messenger.rb +++ b/app/models/messenger.rb @@ -1,4 +1,3 @@ -# Redmine Messenger plugin for Redmine require 'net/http' class Messenger diff --git a/app/models/messenger_setting.rb b/app/models/messenger_setting.rb index 393d252..952840c 100644 --- a/app/models/messenger_setting.rb +++ b/app/models/messenger_setting.rb @@ -1,11 +1,7 @@ -# Redmine Messenger plugin for Redmine - class MessengerSetting < ActiveRecord::Base include Redmine::SafeAttributes belongs_to :project - validates :project_id, presence: true - safe_attributes 'messenger_url', 'messenger_icon', 'messenger_channel', @@ -30,7 +26,7 @@ class MessengerSetting < ActiveRecord::Base 'post_password', 'post_password_updates' - attr_protected :id + attr_protected :id, :project_id def self.find_or_create(p_id) setting = MessengerSetting.find_by(project_id: p_id) diff --git a/app/views/messenger_settings/_show.html.slim b/app/views/messenger_settings/_show.html.slim index 81caa31..3d5417e 100644 --- a/app/views/messenger_settings/_show.html.slim +++ b/app/views/messenger_settings/_show.html.slim @@ -1,11 +1,11 @@ .box.tabular.messenger_settings - @messenger_setting = MessengerSetting.find_or_create(@project.id) + = form_tag(project_reporting_sla_path(project_id: @project), method: :put, class: 'tabular') do = labelled_form_for :setting, @messenger_setting, - url: { controller: 'messenger_settings', - action: 'save', id: @project, tab: 'messenger', - partial: 'messenger_settings/save', - setting_id: @messenger_setting.id } do |f| + url: project_messenger_setting_path(project_id: @project), + method: :put, + class: 'tabular' do |f| = error_messages_for 'messenger_setting' .box .info = t(:messenger_settings_project_intro) diff --git a/config/routes.rb b/config/routes.rb index 820f221..443d8ba 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,7 +1,6 @@ -# Redmine Messenger plugin for Redmine +# Plugin's routes +# See: http://guides.rubyonrails.org/routing.html -RedmineApp::Application.routes.draw do - match 'projects/:id/messenger_settings/save', - to: 'messenger_settings#save', - via: %i[post put patch] +resources :projects do + resource :messenger_setting, only: %i[show update] end diff --git a/db/migrate/001_create_messenger_settings.rb b/db/migrate/001_create_messenger_settings.rb index ab0ef1f..f0148b3 100644 --- a/db/migrate/001_create_messenger_settings.rb +++ b/db/migrate/001_create_messenger_settings.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - class CreateMessengerSettings < ActiveRecord::Migration def change create_table :messenger_settings do |t| diff --git a/db/migrate/002_add_default_mentions.rb b/db/migrate/002_add_default_mentions.rb index 77e616f..232263e 100644 --- a/db/migrate/002_add_default_mentions.rb +++ b/db/migrate/002_add_default_mentions.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - class AddDefaultMentions < ActiveRecord::Migration def change add_column :messenger_settings, :default_mentions, :string diff --git a/db/migrate/003_add_private_settings.rb b/db/migrate/003_add_private_settings.rb index d9b0f68..fd4379f 100644 --- a/db/migrate/003_add_private_settings.rb +++ b/db/migrate/003_add_private_settings.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - class AddPrivateSettings < ActiveRecord::Migration def change add_column :messenger_settings, :post_private_contacts, :integer, default: 0, null: false diff --git a/init.rb b/init.rb index c8b6a16..4c6cea0 100644 --- a/init.rb +++ b/init.rb @@ -13,7 +13,7 @@ Redmine::Plugin.register :redmine_messenger do requires_redmine version_or_higher: '3.0.0' - permission :manage_messenger, projects: :settings, messenger_settings: :save + permission :manage_messenger, projects: :settings, messenger_settings: :update settings default: { messenger_url: '', diff --git a/lib/redmine_messenger.rb b/lib/redmine_messenger.rb index 979ee0d..b978628 100644 --- a/lib/redmine_messenger.rb +++ b/lib/redmine_messenger.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - Rails.configuration.to_prepare do module RedmineMessenger REDMINE_CONTACTS_SUPPORT = Redmine::Plugin.installed?('redmine_contacts') ? true : false diff --git a/lib/redmine_messenger/helpers.rb b/lib/redmine_messenger/helpers.rb index a3dafe3..b8fccfb 100644 --- a/lib/redmine_messenger/helpers.rb +++ b/lib/redmine_messenger/helpers.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Helpers def project_messenger_options(active) diff --git a/lib/redmine_messenger/hooks.rb b/lib/redmine_messenger/hooks.rb index 6780f39..c651366 100644 --- a/lib/redmine_messenger/hooks.rb +++ b/lib/redmine_messenger/hooks.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger class MessengerListener < Redmine::Hook::Listener def model_changeset_scan_commit_for_issue_ids_pre_issue_update(context = {}) diff --git a/lib/redmine_messenger/patches/contact_patch.rb b/lib/redmine_messenger/patches/contact_patch.rb index daf88a8..f80bbb6 100644 --- a/lib/redmine_messenger/patches/contact_patch.rb +++ b/lib/redmine_messenger/patches/contact_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module ContactPatch diff --git a/lib/redmine_messenger/patches/db_entry_patch.rb b/lib/redmine_messenger/patches/db_entry_patch.rb index ea4d910..6e4aa33 100644 --- a/lib/redmine_messenger/patches/db_entry_patch.rb +++ b/lib/redmine_messenger/patches/db_entry_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module DbEntryPatch diff --git a/lib/redmine_messenger/patches/issue_patch.rb b/lib/redmine_messenger/patches/issue_patch.rb index 72bb437..bf1fb95 100644 --- a/lib/redmine_messenger/patches/issue_patch.rb +++ b/lib/redmine_messenger/patches/issue_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module IssuePatch diff --git a/lib/redmine_messenger/patches/password_patch.rb b/lib/redmine_messenger/patches/password_patch.rb index 5148a65..2cd4009 100644 --- a/lib/redmine_messenger/patches/password_patch.rb +++ b/lib/redmine_messenger/patches/password_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module PasswordPatch diff --git a/lib/redmine_messenger/patches/projects_helper_patch.rb b/lib/redmine_messenger/patches/projects_helper_patch.rb index 8235cf9..1154f1d 100644 --- a/lib/redmine_messenger/patches/projects_helper_patch.rb +++ b/lib/redmine_messenger/patches/projects_helper_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module ProjectsHelperPatch @@ -14,7 +12,6 @@ module RedmineMessenger def project_settings_tabs_with_messenger tabs = project_settings_tabs_without_messenger action = { name: 'messenger', - controller: 'messenger_settings', action: :show, partial: 'messenger_settings/show', label: :label_messenger } diff --git a/lib/redmine_messenger/patches/wiki_page_patch.rb b/lib/redmine_messenger/patches/wiki_page_patch.rb index e8a4bca..009c6a6 100644 --- a/lib/redmine_messenger/patches/wiki_page_patch.rb +++ b/lib/redmine_messenger/patches/wiki_page_patch.rb @@ -1,5 +1,3 @@ -# Redmine Messenger plugin for Redmine - module RedmineMessenger module Patches module WikiPagePatch diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb new file mode 100644 index 0000000..5afd742 --- /dev/null +++ b/test/integration/routing_test.rb @@ -0,0 +1,14 @@ +# This file is a part of redmine_reporting, +# a reporting and statistics plugin for Redmine. +# +# Copyright (c) 2016-2018 AlphaNodes GmbH +# https://alphanodes.com + +require File.expand_path('../../test_helper', __FILE__) + +class RoutingTest < Redmine::RoutingTest + test 'routing sla' do + should_route 'GET /projects/1/settings/messenger' => 'projects#settings', id: '1', tab: 'messenger' + should_route 'PUT /projects/1/messenger_setting' => 'messenger_settings#update', project_id: '1' + end +end