Create tracker rol
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
class Admin::BudgetInvestmentMilestonesController < Admin::MilestonesController
|
||||
|
||||
private
|
||||
|
||||
def milestoneable
|
||||
Budget::Investment.find(params[:budget_investment_id])
|
||||
end
|
||||
end
|
||||
@@ -1,8 +0,0 @@
|
||||
class Admin::BudgetInvestmentProgressBarsController < Admin::ProgressBarsController
|
||||
|
||||
private
|
||||
|
||||
def progressable
|
||||
Budget::Investment.find(params[:budget_investment_id])
|
||||
end
|
||||
end
|
||||
@@ -37,6 +37,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
load_admins
|
||||
load_valuators
|
||||
load_valuator_groups
|
||||
load_trackers
|
||||
load_tags
|
||||
end
|
||||
|
||||
@@ -50,6 +51,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
load_admins
|
||||
load_valuators
|
||||
load_valuator_groups
|
||||
load_trackers
|
||||
load_tags
|
||||
render :edit
|
||||
end
|
||||
@@ -88,7 +90,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
params.require(:budget_investment)
|
||||
.permit(:title, :description, :external_url, :heading_id, :administrator_id, :tag_list,
|
||||
:valuation_tag_list, :incompatible, :visible_to_valuators, :selected,
|
||||
:milestone_tag_list, valuator_ids: [], valuator_group_ids: [])
|
||||
:milestone_tag_list, tracker_ids: [], valuator_ids: [], valuator_group_ids: [])
|
||||
end
|
||||
|
||||
def load_budget
|
||||
@@ -103,6 +105,10 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
@admins = Administrator.includes(:user).all
|
||||
end
|
||||
|
||||
def load_trackers
|
||||
@trackers = Tracker.includes(:user).all.order(description: :asc).order("users.email ASC")
|
||||
end
|
||||
|
||||
def load_valuators
|
||||
@valuators = Valuator.includes(:user).all.order(description: :asc).order("users.email ASC")
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Admin::Legislation::MilestonesController < Admin::MilestonesController
|
||||
class Admin::Legislation::MilestonesController < Tracking::MilestonesController
|
||||
include FeatureFlags
|
||||
feature_flag :legislation
|
||||
|
||||
@@ -11,8 +11,4 @@ class Admin::Legislation::MilestonesController < Admin::MilestonesController
|
||||
def milestoneable
|
||||
::Legislation::Process.find(params[:process_id])
|
||||
end
|
||||
|
||||
def milestoneable_path
|
||||
admin_legislation_process_milestones_path(milestoneable)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
class Admin::MilestonesController < Admin::BaseController
|
||||
include Translatable
|
||||
include ImageAttributes
|
||||
|
||||
before_action :load_milestoneable, only: [:index, :new, :create, :edit, :update, :destroy]
|
||||
before_action :load_milestone, only: [:edit, :update, :destroy]
|
||||
before_action :load_statuses, only: [:index, :new, :create, :edit, :update]
|
||||
helper_method :milestoneable_path
|
||||
|
||||
def index
|
||||
end
|
||||
|
||||
def new
|
||||
@milestone = @milestoneable.milestones.new
|
||||
end
|
||||
|
||||
def create
|
||||
@milestone = @milestoneable.milestones.new(milestone_params)
|
||||
if @milestone.save
|
||||
redirect_to milestoneable_path, notice: t("admin.milestones.create.notice")
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def update
|
||||
if @milestone.update(milestone_params)
|
||||
redirect_to milestoneable_path, notice: t("admin.milestones.update.notice")
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@milestone.destroy
|
||||
redirect_to milestoneable_path, notice: t("admin.milestones.delete.notice")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def milestone_params
|
||||
documents_attributes = [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]
|
||||
attributes = [:publication_date, :status_id,
|
||||
translation_params(Milestone),
|
||||
image_attributes: image_attributes, documents_attributes: documents_attributes]
|
||||
|
||||
params.require(:milestone).permit(*attributes)
|
||||
end
|
||||
|
||||
def load_milestoneable
|
||||
@milestoneable = milestoneable
|
||||
end
|
||||
|
||||
def milestoneable
|
||||
raise "Implement in subclass"
|
||||
end
|
||||
|
||||
def load_milestone
|
||||
@milestone = @milestoneable.milestones.find(params[:id])
|
||||
end
|
||||
|
||||
def load_statuses
|
||||
@statuses = Milestone::Status.all
|
||||
end
|
||||
|
||||
def milestoneable_path
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(@milestone.milestoneable)])
|
||||
end
|
||||
end
|
||||
@@ -1,8 +0,0 @@
|
||||
class Admin::ProposalMilestonesController < Admin::MilestonesController
|
||||
|
||||
private
|
||||
|
||||
def milestoneable
|
||||
Proposal.find(params[:proposal_id])
|
||||
end
|
||||
end
|
||||
56
app/controllers/admin/trackers_controller.rb
Normal file
56
app/controllers/admin/trackers_controller.rb
Normal file
@@ -0,0 +1,56 @@
|
||||
class Admin::TrackersController < Admin::BaseController
|
||||
load_and_authorize_resource
|
||||
|
||||
before_action :set_tracker, only: [:show, :edit, :update, :destroy]
|
||||
|
||||
def show
|
||||
@tracker = Tracker.find(params[:id])
|
||||
end
|
||||
|
||||
def index
|
||||
@trackers = @trackers.page(params[:page])
|
||||
end
|
||||
|
||||
def search
|
||||
@users = User.search(params[:name_or_email])
|
||||
.includes(:tracker)
|
||||
.page(params[:page])
|
||||
.for_render
|
||||
end
|
||||
|
||||
def create
|
||||
@tracker = Tracker.new(tracker_params)
|
||||
@tracker.save
|
||||
|
||||
redirect_to admin_trackers_path
|
||||
end
|
||||
|
||||
def edit
|
||||
@tracker = Tracker.find(params[:id])
|
||||
end
|
||||
|
||||
def update
|
||||
@tracker = Tracker.find(params[:id])
|
||||
if @tracker.update(tracker_params)
|
||||
notice = t("admin.trackers.form.updated")
|
||||
redirect_to [:admin, @tracker], notice: notice
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@tracker.destroy
|
||||
redirect_to admin_trackers_path
|
||||
end
|
||||
|
||||
private
|
||||
def set_tracker
|
||||
@tracker = Tracker.find(params[:id])
|
||||
end
|
||||
|
||||
def tracker_params
|
||||
params[:tracker][:description] = nil if params[:tracker][:description].blank?
|
||||
params.require(:tracker).permit(:user_id, :description, :budget_investment_count)
|
||||
end
|
||||
end
|
||||
15
app/controllers/tracking/base_controller.rb
Normal file
15
app/controllers/tracking/base_controller.rb
Normal file
@@ -0,0 +1,15 @@
|
||||
class Tracking::BaseController < ApplicationController
|
||||
layout "admin"
|
||||
|
||||
before_action :authenticate_user!
|
||||
before_action :verify_tracker
|
||||
|
||||
skip_authorization_check
|
||||
|
||||
private
|
||||
|
||||
def verify_tracker
|
||||
raise CanCan::AccessDenied unless current_user.try(:tracker?) || current_user.try(:administrator?)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
class Tracking::BudgetInvestmentMilestonesController < Tracking::MilestonesController
|
||||
|
||||
private
|
||||
|
||||
def milestoneable
|
||||
Budget::Investment.find(params[:budget_investment_id])
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,17 @@
|
||||
class Tracking::BudgetInvestmentProgressBarsController < Tracking::ProgressBarsController
|
||||
|
||||
before_action :restrict_access_to_assigned_items
|
||||
|
||||
private
|
||||
|
||||
def progressable
|
||||
Budget::Investment.find(params[:budget_investment_id])
|
||||
end
|
||||
|
||||
def restrict_access_to_assigned_items
|
||||
return if current_user.administrator? ||
|
||||
Budget::TrackerAssignment.exists?(investment_id: params[:budget_investment_id],
|
||||
tracker_id: current_user.tracker.id)
|
||||
raise ActionController::RoutingError.new("Not Found")
|
||||
end
|
||||
end
|
||||
83
app/controllers/tracking/budget_investments_controller.rb
Normal file
83
app/controllers/tracking/budget_investments_controller.rb
Normal file
@@ -0,0 +1,83 @@
|
||||
class Tracking::BudgetInvestmentsController < Tracking::BaseController
|
||||
include FeatureFlags
|
||||
include CommentableActions
|
||||
|
||||
feature_flag :budgets
|
||||
|
||||
before_action :restrict_access_to_assigned_items, only: [:show, :edit]
|
||||
before_action :load_budget
|
||||
before_action :load_investment, only: [:show, :edit]
|
||||
|
||||
has_orders %w{oldest}, only: [:show, :edit]
|
||||
|
||||
load_and_authorize_resource :investment, class: "Budget::Investment"
|
||||
|
||||
def index
|
||||
@heading_filters = heading_filters
|
||||
@investments = if current_user.tracker? && @budget.present?
|
||||
current_user.tracker.investments_by_heading(heading_params, @budget)
|
||||
.page(params[:page])
|
||||
else
|
||||
Budget::Investment.none.page(params[:page])
|
||||
end
|
||||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def resource_model
|
||||
Budget::Investment
|
||||
end
|
||||
|
||||
def resource_name
|
||||
resource_model.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def load_budget
|
||||
@budget = Budget.find(params[:budget_id])
|
||||
end
|
||||
|
||||
def load_investment
|
||||
@investment = @budget.investments.find params[:id]
|
||||
end
|
||||
|
||||
def heading_filters
|
||||
investments = @budget.investments.by_tracker(current_user.tracker.try(:id))
|
||||
.distinct
|
||||
investment_headings = Budget::Heading.where(id: investments.pluck(:heading_id).uniq)
|
||||
.order(name: :asc)
|
||||
all_headings_filter = [
|
||||
{
|
||||
name: t("valuation.budget_investments.index.headings_filter_all"),
|
||||
id: nil,
|
||||
count: investments.size
|
||||
}
|
||||
]
|
||||
|
||||
filters = investment_headings.inject(all_headings_filter) do |filters, heading|
|
||||
filters << {
|
||||
name: heading.name,
|
||||
id: heading.id,
|
||||
count: investments.select{|i| i.heading_id == heading.id}.size
|
||||
}
|
||||
end
|
||||
filters.uniq
|
||||
end
|
||||
|
||||
def restrict_access_to_assigned_items
|
||||
return if current_user.administrator? ||
|
||||
Budget::TrackerAssignment.exists?(investment_id: params[:id],
|
||||
tracker_id: current_user.tracker.id)
|
||||
raise ActionController::RoutingError.new("Not Found")
|
||||
end
|
||||
|
||||
def heading_params
|
||||
params.permit(:heading_id)
|
||||
end
|
||||
|
||||
end
|
||||
14
app/controllers/tracking/budgets_controller.rb
Normal file
14
app/controllers/tracking/budgets_controller.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
class Tracking::BudgetsController < Tracking::BaseController
|
||||
include FeatureFlags
|
||||
feature_flag :budgets
|
||||
|
||||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
@budget = current_budget
|
||||
if @budget.present?
|
||||
@investments = @budget.investments
|
||||
.by_tracker(current_user.tracker)
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,18 @@
|
||||
class Tracking::Legislation::MilestonesController < Tracking::MilestonesController
|
||||
include FeatureFlags
|
||||
feature_flag :legislation
|
||||
|
||||
def index
|
||||
@process = milestoneable
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def milestoneable
|
||||
::Legislation::Process.find(params[:process_id])
|
||||
end
|
||||
|
||||
def milestoneable_path
|
||||
admin_legislation_process_milestones_path(milestoneable)
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class Admin::Legislation::ProgressBarsController < Admin::ProgressBarsController
|
||||
class Tracking::Legislation::ProgressBarsController < Tracking::ProgressBarsController
|
||||
include FeatureFlags
|
||||
feature_flag :legislation
|
||||
|
||||
73
app/controllers/tracking/milestones_controller.rb
Normal file
73
app/controllers/tracking/milestones_controller.rb
Normal file
@@ -0,0 +1,73 @@
|
||||
class Tracking::MilestonesController < Tracking::BaseController
|
||||
include Translatable
|
||||
include ImageAttributes
|
||||
|
||||
before_action :load_milestoneable, only: [:index, :new, :create, :edit, :update, :destroy]
|
||||
before_action :load_milestone, only: [:edit, :update, :destroy]
|
||||
before_action :load_statuses, only: [:index, :new, :create, :edit, :update]
|
||||
helper_method :milestoneable_path
|
||||
|
||||
def index
|
||||
end
|
||||
|
||||
def new
|
||||
@milestone = @milestoneable.milestones.new
|
||||
end
|
||||
|
||||
def create
|
||||
@milestone = @milestoneable.milestones.new(milestone_params)
|
||||
if @milestone.save
|
||||
redirect_to milestoneable_path, notice: t("tracking.milestones.create.notice")
|
||||
else
|
||||
render :new
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def update
|
||||
if @milestone.update(milestone_params)
|
||||
redirect_to milestoneable_path, notice: t("tracking.milestones.update.notice")
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@milestone.destroy
|
||||
redirect_to milestoneable_path, notice: t("tracking.milestones.delete.notice")
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def milestone_params
|
||||
documents_attributes = [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]
|
||||
attributes = [:publication_date, :status_id,
|
||||
translation_params(Milestone),
|
||||
image_attributes: image_attributes, documents_attributes: documents_attributes]
|
||||
|
||||
params.require(:milestone).permit(*attributes)
|
||||
end
|
||||
|
||||
def load_milestoneable
|
||||
@milestoneable = milestoneable
|
||||
end
|
||||
|
||||
def milestoneable
|
||||
raise "Implement in subclass"
|
||||
end
|
||||
|
||||
def load_milestone
|
||||
@milestone = @milestoneable.milestones.find(params[:id])
|
||||
end
|
||||
|
||||
def load_statuses
|
||||
@statuses = Milestone::Status.all
|
||||
end
|
||||
|
||||
def milestoneable_path
|
||||
polymorphic_path([current_user.administrator? ? :admin : :tracking,
|
||||
*resource_hierarchy_for(@milestone.milestoneable)])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class Admin::ProgressBarsController < Admin::BaseController
|
||||
class Tracking::ProgressBarsController < Tracking::BaseController
|
||||
include Translatable
|
||||
|
||||
before_action :load_progressable
|
||||
@@ -15,7 +15,7 @@ class Admin::ProgressBarsController < Admin::BaseController
|
||||
def create
|
||||
@progress_bar = @progressable.progress_bars.new(progress_bar_params)
|
||||
if @progress_bar.save
|
||||
redirect_to progress_bars_index, notice: t("admin.progress_bars.create.notice")
|
||||
redirect_to progress_bars_index, notice: t("tracking.progress_bars.create.notice")
|
||||
else
|
||||
render :new
|
||||
end
|
||||
@@ -26,7 +26,7 @@ class Admin::ProgressBarsController < Admin::BaseController
|
||||
|
||||
def update
|
||||
if @progress_bar.update(progress_bar_params)
|
||||
redirect_to progress_bars_index, notice: t("admin.progress_bars.update.notice")
|
||||
redirect_to progress_bars_index, notice: t("tracking.progress_bars.update.notice")
|
||||
else
|
||||
render :edit
|
||||
end
|
||||
@@ -34,7 +34,7 @@ class Admin::ProgressBarsController < Admin::BaseController
|
||||
|
||||
def destroy
|
||||
@progress_bar.destroy
|
||||
redirect_to progress_bars_index, notice: t("admin.progress_bars.delete.notice")
|
||||
redirect_to progress_bars_index, notice: t("tracking.progress_bars.delete.notice")
|
||||
end
|
||||
|
||||
private
|
||||
@@ -64,6 +64,6 @@ class Admin::ProgressBarsController < Admin::BaseController
|
||||
end
|
||||
|
||||
def progress_bars_index
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(@progressable), ProgressBar.new])
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(@progressable), ProgressBar.new])
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,8 @@
|
||||
class Tracking::ProposalMilestonesController < Tracking::MilestonesController
|
||||
|
||||
private
|
||||
|
||||
def milestoneable
|
||||
Proposal.find(params[:proposal_id])
|
||||
end
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class Admin::ProposalProgressBarsController < Admin::ProgressBarsController
|
||||
class Tracking::ProposalProgressBarsController < Tracking::ProgressBarsController
|
||||
|
||||
private
|
||||
def progressable
|
||||
21
app/helpers/trackers_helper.rb
Normal file
21
app/helpers/trackers_helper.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
module TrackersHelper
|
||||
|
||||
def tracker_label(tracker)
|
||||
truncate([tracker.name, tracker.email, tracker.description].compact.join(" - "), length: 100)
|
||||
end
|
||||
|
||||
def tracker_back_path(progressable)
|
||||
if progressable.class.to_s == "Legislation::Process"
|
||||
admin_legislation_process_milestones_path(progressable)
|
||||
else
|
||||
polymorphic_path([tracker_namespace, *resource_hierarchy_for(progressable)])
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def tracker_namespace
|
||||
current_user.administrator? ? :admin : :tracking
|
||||
end
|
||||
|
||||
end
|
||||
@@ -56,11 +56,13 @@ module UsersHelper
|
||||
current_user && current_user.poll_officer?
|
||||
end
|
||||
|
||||
def current_tracker?
|
||||
current_user && current_user.tracker?
|
||||
end
|
||||
|
||||
def show_admin_menu?(user = nil)
|
||||
unless namespace == "officing"
|
||||
current_administrator? || current_moderator? || current_valuator? || current_manager? ||
|
||||
(user && user.administrator?) || current_poll_officer?
|
||||
end
|
||||
current_administrator? || current_moderator? || current_valuator? || current_manager? ||
|
||||
current_tracker? || (user && user.administrator?) || current_poll_officer?
|
||||
end
|
||||
|
||||
def interests_title_text(user)
|
||||
|
||||
@@ -99,6 +99,7 @@ module Abilities
|
||||
can [:create, :destroy], DirectUpload
|
||||
|
||||
can [:deliver], Newsletter, hidden_at: nil
|
||||
can [:manage], ::Tracker
|
||||
can [:manage], Dashboard::AdministratorTask
|
||||
|
||||
can [:edit, :update], DownloadSetting
|
||||
|
||||
14
app/models/abilities/tracker.rb
Normal file
14
app/models/abilities/tracker.rb
Normal file
@@ -0,0 +1,14 @@
|
||||
module Abilities
|
||||
class Tracker
|
||||
include CanCan::Ability
|
||||
|
||||
def initialize(user)
|
||||
tracker = user.tracker
|
||||
|
||||
can :index, Budget
|
||||
can [:index, :show, :edit], Budget::Investment
|
||||
can :manage, Milestone
|
||||
can :manage, ProgressBar
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -8,6 +8,7 @@ class Ability
|
||||
|
||||
if user # logged-in users
|
||||
merge Abilities::Valuator.new(user) if user.valuator?
|
||||
merge Abilities::Tracker.new(user) if user.tracker?
|
||||
|
||||
if user.administrator?
|
||||
merge Abilities::Administrator.new(user)
|
||||
|
||||
@@ -26,6 +26,8 @@ class Budget
|
||||
include Milestoneable
|
||||
include Randomizable
|
||||
|
||||
extend DownloadSettings::BudgetInvestmentCsv
|
||||
|
||||
belongs_to :author, -> { with_hidden }, class_name: "User", foreign_key: "author_id"
|
||||
belongs_to :heading
|
||||
belongs_to :group
|
||||
@@ -41,7 +43,9 @@ class Budget
|
||||
has_many :comments, -> {where(valuation: false)}, as: :commentable, class_name: "Comment"
|
||||
has_many :valuations, -> {where(valuation: true)}, as: :commentable, class_name: "Comment"
|
||||
|
||||
extend DownloadSettings::BudgetInvestmentCsv
|
||||
has_many :tracker_assignments, dependent: :destroy
|
||||
has_many :trackers, through: :tracker_assignments
|
||||
|
||||
delegate :name, :email, to: :author, prefix: true
|
||||
|
||||
validates :title, presence: true
|
||||
@@ -93,6 +97,7 @@ class Budget
|
||||
scope :by_admin, ->(admin_id) { where(administrator_id: admin_id) }
|
||||
scope :by_tag, ->(tag_name) { tagged_with(tag_name) }
|
||||
scope :by_valuator, ->(valuator_id) { where("budget_valuator_assignments.valuator_id = ?", valuator_id).joins(:valuator_assignments) }
|
||||
scope :by_tracker, ->(tracker_id) { where("budget_tracker_assignments.tracker_id = ?", tracker_id).joins(:tracker_assignments) }
|
||||
scope :by_valuator_group, ->(valuator_group_id) { where("budget_valuator_group_assignments.valuator_group_id = ?", valuator_group_id).joins(:valuator_group_assignments) }
|
||||
|
||||
scope :for_render, -> { includes(:heading) }
|
||||
|
||||
6
app/models/budget/tracker_assignment.rb
Normal file
6
app/models/budget/tracker_assignment.rb
Normal file
@@ -0,0 +1,6 @@
|
||||
class Budget
|
||||
class TrackerAssignment < ApplicationRecord
|
||||
belongs_to :tracker, counter_cache: :budget_investment_count
|
||||
belongs_to :investment, counter_cache: true
|
||||
end
|
||||
end
|
||||
30
app/models/tracker.rb
Normal file
30
app/models/tracker.rb
Normal file
@@ -0,0 +1,30 @@
|
||||
class Tracker < ApplicationRecord
|
||||
belongs_to :user, touch: true
|
||||
|
||||
delegate :name, :email, :name_and_email, to: :user
|
||||
|
||||
has_many :tracker_assignments, dependent: :destroy, class_name: "Budget::TrackerAssignment"
|
||||
has_many :investments, through: :tracker_assignments, class_name: "Budget::Investment"
|
||||
|
||||
validates :user_id, presence: true, uniqueness: true
|
||||
|
||||
def description_or_email
|
||||
description.present? ? description : email
|
||||
end
|
||||
|
||||
def description_or_name
|
||||
description.present? ? description : name
|
||||
end
|
||||
|
||||
def assigned_investment_ids
|
||||
investment_ids
|
||||
end
|
||||
|
||||
def investments_by_heading(params, budget)
|
||||
results = investments.by_budget(budget)
|
||||
if params[:heading_id].present?
|
||||
results = results.by_heading(params[:heading_id])
|
||||
end
|
||||
results
|
||||
end
|
||||
end
|
||||
@@ -15,6 +15,7 @@ class User < ApplicationRecord
|
||||
has_one :administrator
|
||||
has_one :moderator
|
||||
has_one :valuator
|
||||
has_one :tracker
|
||||
has_one :manager
|
||||
has_one :poll_officer, class_name: "Poll::Officer"
|
||||
has_one :organization
|
||||
@@ -151,6 +152,10 @@ class User < ApplicationRecord
|
||||
valuator.present?
|
||||
end
|
||||
|
||||
def tracker?
|
||||
tracker.present?
|
||||
end
|
||||
|
||||
def manager?
|
||||
manager.present?
|
||||
end
|
||||
|
||||
@@ -212,6 +212,10 @@
|
||||
<%= link_to t("admin.menu.valuators"), admin_valuators_path %>
|
||||
</li>
|
||||
|
||||
<li <%= "class=is-active" if controller_name == "trackers" %>>
|
||||
<%= link_to t("admin.menu.trackers"), admin_trackers_path %>
|
||||
</li>
|
||||
|
||||
<li <%= "class=is-active" if controller_name == "managers" %>>
|
||||
<%= link_to t("admin.menu.managers"), admin_managers_path %>
|
||||
</li>
|
||||
|
||||
@@ -84,6 +84,16 @@
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="small-12 column">
|
||||
<hr>
|
||||
<%= f.label :tracker_ids, t("admin.budget_investments.edit.assigned_trackers") %>
|
||||
<ul>
|
||||
<%= f.collection_check_boxes :tracker_ids, @trackers, :id, :email do |b| %>
|
||||
<li><%= b.label(title: tracker_label(b.object)) { b.check_box + truncate(b.object.description_or_email, length: 60) } %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row expanded margin-top">
|
||||
|
||||
@@ -50,6 +50,15 @@
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<p id="assigned_trackers">
|
||||
<strong><%= t("admin.budget_investments.show.assigned_trackers") %>:</strong>
|
||||
<% if @investment.trackers.any? %>
|
||||
<%= @investment.trackers.collect(&:name_and_email).join(", ") %>
|
||||
<% else %>
|
||||
<%= t("admin.budget_investments.show.undefined") %>
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<p>
|
||||
<%= link_to t("admin.budget_investments.show.edit_classification"),
|
||||
edit_admin_budget_budget_investment_path(@budget, @investment,
|
||||
@@ -66,6 +75,6 @@
|
||||
|
||||
<%= render "valuation/budget_investments/valuation_comments" %>
|
||||
|
||||
<%= render "admin/milestones/milestones", milestoneable: @investment %>
|
||||
|
||||
<%= render "admin/change_logs/change_log", logs: @logs %>
|
||||
|
||||
<%= render "tracking/milestones/milestones", milestoneable: @investment %>
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
|
||||
<%= render "admin/legislation/processes/subnav", process: @process, active: "milestones" %>
|
||||
<%= render "summary_form", process: @process %>
|
||||
<%= render "admin/milestones/milestones", milestoneable: @process %>
|
||||
<%= render "tracking/milestones/milestones", milestoneable: @process %>
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
<% if @progress_bar.primary? %>
|
||||
<% bar_title = t("admin.progress_bars.edit.title.primary") %>
|
||||
<% else %>
|
||||
<% bar_title = t("admin.progress_bars.edit.title.secondary", title: @progress_bar.title) %>
|
||||
<% end %>
|
||||
|
||||
<% provide :title do %>
|
||||
<%= "#{t("admin.header.title")} - #{bar_title}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to progress_bars_index %>
|
||||
|
||||
<h2><%= bar_title %></h2>
|
||||
|
||||
<%= render "form" %>
|
||||
@@ -1,9 +0,0 @@
|
||||
<% provide :title do %>
|
||||
<%= "#{t("admin.header.title")} - #{t("admin.progress_bars.index.title")}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to polymorphic_path([:admin, *resource_hierarchy_for(@progressable)]) %>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<%= render "admin/progress_bars/progress_bars", progressable: @progressable %>
|
||||
@@ -1,9 +0,0 @@
|
||||
<% provide :title do %>
|
||||
<%= "#{t("admin.header.title")} - #{t("admin.progress_bars.new.creating")}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to progress_bars_index %>
|
||||
|
||||
<h2><%= t("admin.progress_bars.new.creating") %></h2>
|
||||
|
||||
<%= render "form" %>
|
||||
@@ -32,4 +32,4 @@
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<%= render "admin/milestones/milestones", milestoneable: @proposal %>
|
||||
<%= render "tracking/milestones/milestones", milestoneable: @proposal %>
|
||||
|
||||
32
app/views/admin/trackers/_form.html.erb
Normal file
32
app/views/admin/trackers/_form.html.erb
Normal file
@@ -0,0 +1,32 @@
|
||||
<%= form_for(tracker) do |f| %>
|
||||
<% if tracker.errors.any? %>
|
||||
<div id="error_explanation">
|
||||
<h2><%= pluralize(tracker.errors.count, "error") %> prohibited this tracker from being saved:</h2>
|
||||
|
||||
<ul>
|
||||
<% tracker.errors.full_messages.each do |message| %>
|
||||
<li><%= message %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :user_id %>
|
||||
<%= f.text_field :user_id %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :description %>
|
||||
<%= f.text_field :description %>
|
||||
</div>
|
||||
|
||||
<div class="field">
|
||||
<%= f.label :budget_investment_count %>
|
||||
<%= f.number_field :budget_investment_count %>
|
||||
</div>
|
||||
|
||||
<div class="actions">
|
||||
<%= f.submit %>
|
||||
</div>
|
||||
<% end %>
|
||||
16
app/views/admin/trackers/edit.html.erb
Normal file
16
app/views/admin/trackers/edit.html.erb
Normal file
@@ -0,0 +1,16 @@
|
||||
<%= back_link_to admin_trackers_path %>
|
||||
|
||||
<h2><%= t("admin.trackers.form.edit_title") %></h2>
|
||||
|
||||
<div class="callout highlight">
|
||||
<strong><%= @tracker.name %></strong><br>
|
||||
<%= @tracker.email %>
|
||||
</div>
|
||||
|
||||
<div class="margin-top">
|
||||
<%= form_for [:admin, @tracker] do |f| %>
|
||||
<%= f.text_field :description %>
|
||||
<%= f.submit t("admin.trackers.form.update"), class: "button success" %>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
48
app/views/admin/trackers/index.html.erb
Normal file
48
app/views/admin/trackers/index.html.erb
Normal file
@@ -0,0 +1,48 @@
|
||||
<h2 class="inline-block"><%= t("admin.trackers.index.title") %></h2>
|
||||
|
||||
<%= render "admin/shared/user_search", url: search_admin_trackers_path %>
|
||||
|
||||
<div id="trackers">
|
||||
<% if @trackers.any? %>
|
||||
<h3 class="margin"><%= page_entries_info @trackers %></h3>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th scope="col"><%= t("admin.trackers.index.name") %></th>
|
||||
<th scope="col"><%= t("admin.trackers.index.email") %></th>
|
||||
<th scope="col"><%= t("admin.valuators.index.description") %></th>
|
||||
<th scope="col" class="small-3"><%= t("admin.actions.actions") %></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @trackers.each do |tracker| %>
|
||||
<tr>
|
||||
<td><%= link_to tracker.name, admin_tracker_path(tracker) %></td>
|
||||
<td><%= tracker.email %></td>
|
||||
<td>
|
||||
<% if tracker.description.present? %>
|
||||
<%= tracker.description %>
|
||||
<% else %>
|
||||
<%= t("admin.trackers.index.no_description") %>
|
||||
<% end %>
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to t("admin.actions.edit"),
|
||||
edit_admin_tracker_path(tracker),
|
||||
class: "button hollow" %>
|
||||
<%= link_to t("admin.valuators.valuator.delete"),
|
||||
admin_tracker_path(tracker),
|
||||
method: :delete,
|
||||
class: "button hollow alert" %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<%= paginate @trackers %>
|
||||
<% else %>
|
||||
<div class="callout primary">
|
||||
<%= t("admin.trackers.index.no_trackers") %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
58
app/views/admin/trackers/search.html.erb
Normal file
58
app/views/admin/trackers/search.html.erb
Normal file
@@ -0,0 +1,58 @@
|
||||
<h2><%= t("admin.trackers.search.title") %></h2>
|
||||
|
||||
<%= render "admin/shared/user_search", url: search_admin_trackers_path %>
|
||||
|
||||
<div id="trackers">
|
||||
<% if @users.any? %>
|
||||
<h3 class="margin"><%= page_entries_info @users %></h3>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<th scope="col"><%= t("admin.trackers.index.name") %></th>
|
||||
<th scope="col"><%= t("admin.trackers.index.email") %></th>
|
||||
<th scope="col"><%= t("admin.trackers.index.description") %></th>
|
||||
<th scope="col"><%= t("admin.shared.actions") %></th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @users.each do |user| %>
|
||||
<tr>
|
||||
<td><%= user.name %></td>
|
||||
<td><%= user.email %></td>
|
||||
<td>
|
||||
<% if user.tracker %>
|
||||
<% if user.tracker.description.present? %>
|
||||
<%= user.tracker.description %>
|
||||
<% else %>
|
||||
<%= t("admin.trackers.index.no_description") %>
|
||||
<% end %>
|
||||
<% else %>
|
||||
<%= t("admin.trackers.index.no_description") %>
|
||||
<% end %>
|
||||
<td>
|
||||
<% if user.tracker? %>
|
||||
<%= link_to t("admin.actions.edit"),
|
||||
edit_admin_tracker_path(user.tracker),
|
||||
class: "button hollow" %>
|
||||
|
||||
<%= link_to t("admin.valuators.valuator.delete"),
|
||||
admin_tracker_path(user.tracker),
|
||||
method: :delete,
|
||||
class: "button hollow alert" %>
|
||||
<% else %>
|
||||
<%= form_for Tracker.new(user: user), url: admin_trackers_path do |f| %>
|
||||
<%= f.hidden_field :user_id %>
|
||||
<%= f.submit t("admin.trackers.tracker.add"),
|
||||
class: "button success expanded" %>
|
||||
<% end %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
<% else %>
|
||||
<div class="callout alert margin">
|
||||
<%= t("admin.shared.no_search_results") %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
22
app/views/admin/trackers/show.html.erb
Normal file
22
app/views/admin/trackers/show.html.erb
Normal file
@@ -0,0 +1,22 @@
|
||||
<%= back_link_to admin_trackers_path %>
|
||||
|
||||
<%= link_to t("admin.actions.edit"), edit_admin_tracker_path(@tracker), class: "button hollow float-right" %>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<h2><%= @tracker.name %></h2>
|
||||
|
||||
<div class="callout highlight">
|
||||
<p>
|
||||
<strong><%= t("admin.trackers.show.email") %></strong><br>
|
||||
<%= @tracker.email %>
|
||||
</p>
|
||||
<p>
|
||||
<strong><%= t("admin.trackers.show.description") %></strong><br>
|
||||
<% if @tracker.description.present? %>
|
||||
<%= @tracker.description %>
|
||||
<% else %>
|
||||
<%= t("admin.trackers.show.no_description") %>
|
||||
<% end %>
|
||||
</p>
|
||||
</div>
|
||||
@@ -21,6 +21,13 @@
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<% if (feature?(:budgets)) &&
|
||||
(current_user.administrator? || current_user.tracker?) %>
|
||||
<li>
|
||||
<%= link_to t("layouts.header.tracking"), tracking_root_path %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<% if current_user.administrator? || current_user.manager? %>
|
||||
<li>
|
||||
<%= link_to t("layouts.header.management"), management_sign_in_path %>
|
||||
|
||||
17
app/views/tracking/_menu.html.erb
Normal file
17
app/views/tracking/_menu.html.erb
Normal file
@@ -0,0 +1,17 @@
|
||||
<nav class="admin-sidebar">
|
||||
<ul id="valuation_menu">
|
||||
<li>
|
||||
<%= link_to t("tracking.menu.title"), tracking_root_path %>
|
||||
</li>
|
||||
|
||||
<% if feature?(:budgets) %>
|
||||
<li <%= "class=is-active" if controller_name == "budget_investments" %>>
|
||||
<%= link_to tracking_budgets_path do %>
|
||||
<span class="icon-budget"></span>
|
||||
<%= t("tracking.menu.budgets") %>
|
||||
<% end %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
12
app/views/tracking/budget_investments/edit.html.erb
Normal file
12
app/views/tracking/budget_investments/edit.html.erb
Normal file
@@ -0,0 +1,12 @@
|
||||
<%= link_to tracking_budget_budget_investment_path(@budget, @investment), class: "back" do %>
|
||||
<span class="icon-angle-left"></span>
|
||||
<%= "#{t("tracking.budget_investments.show.title")} #{@investment.id}"%>
|
||||
<% end %>
|
||||
|
||||
<br>
|
||||
|
||||
<h1><%= @investment.title %></h1>
|
||||
|
||||
<%= safe_html_with_links @investment.description %>
|
||||
|
||||
<%= render "tracking/milestones/milestones", milestoneable: @investment %>
|
||||
58
app/views/tracking/budget_investments/index.html.erb
Normal file
58
app/views/tracking/budget_investments/index.html.erb
Normal file
@@ -0,0 +1,58 @@
|
||||
<h2>
|
||||
<%= @budget.name %> - <%= t("tracking.budget_investments.index.title") %>
|
||||
<small><%= t("tracking.budget_investments.index.assigned_to", tracker: current_user.name) %></small>
|
||||
</h2>
|
||||
|
||||
<div class="row expanded collapse margin-bottom">
|
||||
<% @heading_filters.each_slice(8) do |slice| %>
|
||||
<div class="small-12 medium-4 column select-heading">
|
||||
<% slice.each do |filter| %>
|
||||
<%= link_to tracking_budget_budget_investments_path(budget_id: @budget.id, heading_id: filter[:id]),
|
||||
class: "#{"is-active" if params[:heading_id].to_s == filter[:id].to_s}" do %>
|
||||
<%= filter[:name] %> (<%= filter[:count] %>)
|
||||
<% end %>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
<% if @investments.any? %>
|
||||
<h3><%= page_entries_info @investments %></h3>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= t("tracking.budget_investments.index.table_id") %></th>
|
||||
<th><%= t("tracking.budget_investments.index.table_title") %></th>
|
||||
<th><%= t("tracking.budget_investments.index.table_heading_name") %></th>
|
||||
<th><%= t("tracking.budget_investments.index.table_actions") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<% @investments.each do |investment| %>
|
||||
<tr id="<%= dom_id(investment) %>" class="budget_investment">
|
||||
<td>
|
||||
<strong><%= investment.id %></strong>
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to investment.title, tracking_budget_budget_investment_path(@budget, investment) %>
|
||||
</td>
|
||||
<td class="small">
|
||||
<%= investment.heading.name %>
|
||||
</td>
|
||||
<td class="small">
|
||||
<%= link_to t("tracking.budget_investments.index.edit"),
|
||||
edit_tracking_budget_budget_investment_path(@budget, investment),
|
||||
class: "button hollow expanded" %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<%= paginate @investments %>
|
||||
<% else %>
|
||||
<div class="callout primary">
|
||||
<%= t("tracking.budget_investments.index.no_investments") %>
|
||||
</div>
|
||||
<% end %>
|
||||
47
app/views/tracking/budget_investments/show.html.erb
Normal file
47
app/views/tracking/budget_investments/show.html.erb
Normal file
@@ -0,0 +1,47 @@
|
||||
<%= back_link_to tracking_budget_budget_investments_path %>
|
||||
|
||||
<h2><%= t("tracking.budget_investments.show.title") %> <%= @investment.id %> </h2>
|
||||
<h1><%= @investment.title %></h1>
|
||||
|
||||
<%= safe_html_with_links @investment.description %>
|
||||
|
||||
<% if @investment.external_url.present? %>
|
||||
<p><%= text_with_links @investment.external_url %></p>
|
||||
<% end %>
|
||||
|
||||
<h2><%= t("tracking.budget_investments.show.info") %></h2>
|
||||
|
||||
<p><strong><%= t("tracking.budget_investments.show.by") %>:</strong>
|
||||
<%= @investment.author.name %>
|
||||
</p>
|
||||
|
||||
<p><strong><%= t("tracking.budget_investments.show.heading") %>:</strong>
|
||||
<%= @investment.heading.name %>
|
||||
</p>
|
||||
|
||||
<p><strong><%= t("tracking.budget_investments.show.sent") %>:</strong>
|
||||
<%= l @investment.created_at, format: :datetime %>
|
||||
</p>
|
||||
|
||||
<h2><%= t("tracking.budget_investments.show.responsibles") %></h2>
|
||||
|
||||
<p><strong><%= t("tracking.budget_investments.show.assigned_admin") %>:</strong>
|
||||
<% if @investment.administrator.present? %>
|
||||
<%= @investment.administrator.name_and_email %>
|
||||
<% else %>
|
||||
<%= t("tracking.budget_investments.show.undefined") %>
|
||||
<% end %>
|
||||
</p>
|
||||
|
||||
<p><strong><%= t("trackers.budget_investments.show.assigned_trackers") %>:</strong></p>
|
||||
<div id="assigned_trackers">
|
||||
<ul>
|
||||
<% @investment.trackers.each do |tracker| %>
|
||||
<li><%= tracker.name_and_email %></li>
|
||||
<% end %>
|
||||
|
||||
<% if @investment.trackers.empty? %>
|
||||
<li><%= t("tracking.budget_investments.show.undefined") %></li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
36
app/views/tracking/budgets/index.html.erb
Normal file
36
app/views/tracking/budgets/index.html.erb
Normal file
@@ -0,0 +1,36 @@
|
||||
<h2 class="inline-block"><%= t("tracking.budgets.index.title") %></h2>
|
||||
|
||||
<% if @budget.present? %>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= t("tracking.budgets.index.table_name") %></th>
|
||||
<th><%= t("tracking.budgets.index.table_phase") %></th>
|
||||
<th><%= t("tracking.budgets.index.table_assigned_investments_tracking_open") %></th>
|
||||
<th><%= t("tracking.budgets.index.table_actions") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr id="<%= dom_id(@budget) %>" class="budget">
|
||||
<td>
|
||||
<%= @budget.name %>
|
||||
</td>
|
||||
<td>
|
||||
<%= t("budgets.phase.#{@budget.phase}") %>
|
||||
</td>
|
||||
<td>
|
||||
<%= @investments.count %>
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to t("tracking.budgets.index.tracking"),
|
||||
tracking_budget_budget_investments_path(budget_id: @budget.id),
|
||||
class: "button hollow expanded" %>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<% else %>
|
||||
<div class="callout primary clear">
|
||||
<%= t("tracking.budgets.index.no_budgets") %>
|
||||
</div>
|
||||
<% end %>
|
||||
@@ -1,13 +1,13 @@
|
||||
<%= render "admin/shared/globalize_locales", resource: @milestone %>
|
||||
|
||||
<%= translatable_form_for [:admin, *resource_hierarchy_for(@milestone)] do |f| %>
|
||||
<%= translatable_form_for [:tracking, *resource_hierarchy_for(@milestone)] do |f| %>
|
||||
|
||||
<div class="small-12 medium-6 margin-bottom">
|
||||
<%= f.select :status_id,
|
||||
@statuses.collect { |s| [s.name, s.id] },
|
||||
{ include_blank: @statuses.any? ? "" : t("admin.milestones.form.no_statuses_defined") },
|
||||
{ include_blank: @statuses.any? ? "" : t("tracking.milestones.form.no_statuses_defined") },
|
||||
{ disabled: @statuses.blank? } %>
|
||||
<%= link_to t("admin.milestones.form.admin_statuses"),
|
||||
<%= link_to t("tracking.milestones.form.admin_statuses"),
|
||||
admin_milestone_statuses_path %>
|
||||
</div>
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
|
||||
<%= translations_form.text_area :description,
|
||||
rows: 5,
|
||||
label: t("admin.milestones.new.description") %>
|
||||
label: t("tracking.milestones.new.description") %>
|
||||
<% end %>
|
||||
|
||||
<%= f.label :publication_date, t("admin.milestones.new.date") %>
|
||||
<%= f.label :publication_date, t("tracking.milestones.new.date") %>
|
||||
<%= f.text_field :publication_date,
|
||||
value: @milestone.publication_date.present? ? l(@milestone.publication_date.to_date) : nil,
|
||||
label: false,
|
||||
@@ -1,7 +1,7 @@
|
||||
<h2 class="inline-block"><%= t("admin.milestones.index.milestone") %></h2>
|
||||
<h2 class="inline-block"><%= t("tracking.milestones.index.milestone") %></h2>
|
||||
|
||||
<%= link_to t("admin.progress_bars.manage"),
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(milestoneable.progress_bars.new)]),
|
||||
<%= link_to t("tracking.progress_bars.manage"),
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(milestoneable.progress_bars.new)]),
|
||||
class: "button hollow float-right" %>
|
||||
|
||||
<% if milestoneable.milestone_tag_list.any? %>
|
||||
@@ -16,14 +16,14 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= t("admin.milestones.index.table_id") %></th>
|
||||
<th><%= t("admin.milestones.index.table_title") %></th>
|
||||
<th><%= t("admin.milestones.index.table_description") %></th>
|
||||
<th><%= t("admin.milestones.index.table_publication_date") %></th>
|
||||
<th><%= t("admin.milestones.index.table_status") %></th>
|
||||
<th><%= t("admin.milestones.index.image") %></th>
|
||||
<th><%= t("admin.milestones.index.documents") %></th>
|
||||
<th><%= t("admin.milestones.index.table_actions") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_id") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_title") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_description") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_publication_date") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_status") %></th>
|
||||
<th><%= t("tracking.milestones.index.image") %></th>
|
||||
<th><%= t("tracking.milestones.index.documents") %></th>
|
||||
<th><%= t("tracking.milestones.index.table_actions") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -32,7 +32,7 @@
|
||||
<td class="text-center"><%= milestone.id %></td>
|
||||
<td>
|
||||
<%= link_to milestone.title,
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(milestone)],
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(milestone)],
|
||||
action: :edit) %>
|
||||
</td>
|
||||
<td class="small small-5"><%= milestone.description %></td>
|
||||
@@ -43,7 +43,7 @@
|
||||
<%= milestone.status.present? ? milestone.status.name : "" %>
|
||||
</td>
|
||||
<td class="small">
|
||||
<%= link_to t("admin.milestones.index.show_image"),
|
||||
<%= link_to t("tracking.milestones.index.show_image"),
|
||||
milestone.image_url(:large),
|
||||
target: :_blank if milestone.image.present? %>
|
||||
</td>
|
||||
@@ -58,8 +58,8 @@
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="small-2">
|
||||
<%= link_to t("admin.milestones.index.delete"),
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(milestone)]),
|
||||
<%= link_to t("tracking.milestones.index.delete"),
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(milestone)]),
|
||||
method: :delete,
|
||||
class: "button hollow alert expanded" %>
|
||||
</td>
|
||||
@@ -68,12 +68,12 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<% else %>
|
||||
<p><%= t("admin.milestones.index.no_milestones") %></p>
|
||||
<p><%= t("tracking.milestones.index.no_milestones") %></p>
|
||||
<% end %>
|
||||
|
||||
<p>
|
||||
<%= link_to t("admin.milestones.index.new_milestone"),
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(milestoneable.milestones.new)],
|
||||
<%= link_to t("tracking.milestones.index.new_milestone"),
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(milestoneable.milestones.new)],
|
||||
action: :new),
|
||||
class: "button hollow" %>
|
||||
</p>
|
||||
@@ -1,6 +1,6 @@
|
||||
<%= back_link_to milestoneable_path %>
|
||||
|
||||
<h2><%= t("admin.milestones.edit.title") %></h2>
|
||||
<h2><%= t("tracking.milestones.edit.title") %></h2>
|
||||
|
||||
<div class="milestone-edit">
|
||||
<%= render "form" %>
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="small-12 column">
|
||||
<%= back_link_to milestoneable_path %>
|
||||
|
||||
<h1><%= t("admin.milestones.new.creating") %></h1>
|
||||
<h1><%= t("tracking.milestones.new.creating") %></h1>
|
||||
|
||||
<%= render "form" %>
|
||||
</div>
|
||||
@@ -1,6 +1,6 @@
|
||||
<%= render "admin/shared/globalize_locales", resource: @progress_bar %>
|
||||
|
||||
<%= translatable_form_for [:admin, *resource_hierarchy_for(@progress_bar)] do |f| %>
|
||||
<%= translatable_form_for [:tracking, *resource_hierarchy_for(@progress_bar)] do |f| %>
|
||||
|
||||
<div class="small-12 medium-6">
|
||||
<%= f.enum_select :kind %>
|
||||
@@ -1,8 +1,8 @@
|
||||
<h2 class="inline-block"><%= t("admin.progress_bars.index.title") %></h2>
|
||||
<h2 class="inline-block"><%= t("tracking.progress_bars.index.title") %></h2>
|
||||
|
||||
<%= link_to t("admin.progress_bars.index.new_progress_bar"),
|
||||
<%= link_to t("tracking.progress_bars.index.new_progress_bar"),
|
||||
polymorphic_path(
|
||||
[:admin, *resource_hierarchy_for(ProgressBar.new(progressable: progressable))],
|
||||
[:tracking, *resource_hierarchy_for(ProgressBar.new(progressable: progressable))],
|
||||
action: :new
|
||||
),
|
||||
class: "button float-right" %>
|
||||
@@ -11,10 +11,10 @@
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th><%= t("admin.progress_bars.index.table_id") %></th>
|
||||
<th><%= t("admin.progress_bars.index.table_kind") %></th>
|
||||
<th><%= t("admin.progress_bars.index.table_title") %></th>
|
||||
<th class="text-center"><%= t("admin.progress_bars.index.table_percentage") %></th>
|
||||
<th><%= t("tracking.progress_bars.index.table_id") %></th>
|
||||
<th><%= t("tracking.progress_bars.index.table_kind") %></th>
|
||||
<th><%= t("tracking.progress_bars.index.table_title") %></th>
|
||||
<th class="text-center"><%= t("tracking.progress_bars.index.table_percentage") %></th>
|
||||
<th><%= t("admin.actions.actions") %></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -29,7 +29,7 @@
|
||||
<% if progress_bar.title.present? %>
|
||||
<%= progress_bar.title %>
|
||||
<% else %>
|
||||
<strong><%= t("admin.progress_bars.index.primary") %></strong>
|
||||
<strong><%= t("tracking.progress_bars.index.primary") %></strong>
|
||||
<% end %>
|
||||
</td>
|
||||
<td class="text-center">
|
||||
@@ -37,12 +37,12 @@
|
||||
</td>
|
||||
<td>
|
||||
<%= link_to t("admin.actions.edit"),
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(progress_bar)],
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(progress_bar)],
|
||||
action: :edit),
|
||||
class: "button hollow" %>
|
||||
|
||||
<%= link_to t("admin.actions.delete"),
|
||||
polymorphic_path([:admin, *resource_hierarchy_for(progress_bar)]),
|
||||
polymorphic_path([:tracking, *resource_hierarchy_for(progress_bar)]),
|
||||
method: :delete,
|
||||
class: "button hollow alert" %>
|
||||
</td>
|
||||
@@ -52,6 +52,6 @@
|
||||
</table>
|
||||
<% else %>
|
||||
<div class="callout primary">
|
||||
<%= t("admin.progress_bars.index.no_progress_bars") %>
|
||||
<%= t("tracking.progress_bars.index.no_progress_bars") %>
|
||||
</div>
|
||||
<% end %>
|
||||
15
app/views/tracking/progress_bars/edit.html.erb
Normal file
15
app/views/tracking/progress_bars/edit.html.erb
Normal file
@@ -0,0 +1,15 @@
|
||||
<% if @progress_bar.primary? %>
|
||||
<% bar_title = t("tracking.progress_bars.edit.title.primary") %>
|
||||
<% else %>
|
||||
<% bar_title = t("tracking.progress_bars.edit.title.secondary", title: @progress_bar.title) %>
|
||||
<% end %>
|
||||
|
||||
<% provide :title do %>
|
||||
<%= "#{t("tracking.header.title")} - #{bar_title}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to progress_bars_index %>
|
||||
|
||||
<h2><%= bar_title %></h2>
|
||||
|
||||
<%= render "form" %>
|
||||
9
app/views/tracking/progress_bars/index.html.erb
Normal file
9
app/views/tracking/progress_bars/index.html.erb
Normal file
@@ -0,0 +1,9 @@
|
||||
<% provide :title do %>
|
||||
<%= "#{t("admin.header.title")} - #{t("tracking.progress_bars.index.title")}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to tracker_back_path(@progressable) %>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<%= render "tracking/progress_bars/progress_bars", progressable: @progressable %>
|
||||
9
app/views/tracking/progress_bars/new.html.erb
Normal file
9
app/views/tracking/progress_bars/new.html.erb
Normal file
@@ -0,0 +1,9 @@
|
||||
<% provide :title do %>
|
||||
<%= "#{t("admin.header.title")} - #{t("tracking.progress_bars.new.creating")}" %>
|
||||
<% end %>
|
||||
|
||||
<%= back_link_to progress_bars_index %>
|
||||
|
||||
<h2><%= t("tracking.progress_bars.new.creating") %></h2>
|
||||
|
||||
<%= render "form" %>
|
||||
Reference in New Issue
Block a user