module ResourceViewHelper
def edit_link(object)
url_for(action: 'edit', controller: object.class.to_s.tableize, id: object.id)
end
def delete_link(object)
url_for(action: 'destroy', controller: object.class.to_s.tableize, id: object.id)
end
def serial_number(i)
if i < 0
raw(content_tag(:i, "", class: "fa fa-check text-success"))
else
raw(i + 1 + (@per_page.to_i * (@current_page.to_i - 1)))
end
end
def display_thumbnail_small(object, **options)
options.reverse_merge!(
method_name: "cover_image.image.small.url",
image_class: "img-rectangle",
image_width: "120",
image_height: "auto",
)
url = url_for(action: 'show', controller: object.class.to_s.tableize, id: object.id)
link_to(url, remote: true) do
raw(display_image(object, options[:method_name], width: options[:image_width], height: options[:image_height], class: options[:image_class], alt: object.display_name))
end
end
def display_featured(object, **options)
options.reverse_merge!(
span_class: 'ml-5 mt-5 label',
)
if object.featured?
content_tag(:span, "Featured", class: "#{options[:span_class]} label-warning")
else
content_tag(:span, "Not Featured", class: "#{options[:span_class]} label-default")
end
end
def display_publishable_status(object, **options)
options.reverse_merge!(
span_class: 'ml-5 mt-5 label',
)
label_class = Publishable::STATUS_UI_CLASS[object.status]
content_tag(:span, object.display_status, class: "#{options[:span_class]} label-#{label_class}")
end
def display_publishable_links(object, **options)
options.reverse_merge!(
publish_icon: 'fa fa-check-square',
unpublish_icon: 'fa fa-square',
remove_icon: 'fa fa-close',
archive_icon: 'fa fa-archive',
publish_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "published"),
unpublish_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "unpublished"),
remove_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "removed"),
archive_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "archived"),
publish_text: "Publish",
unpublish_text: "UnPublish",
remove_text: "Remove",
archive_text: "Archive",
publish_class: "edit",
unpublish_class: "",
remove_class: "delete",
archive_class: "",
has_permission_to_edit: true
)
if @current_permission
options[:has_permission_to_edit] = @current_permission.can_update?
end
links = []
links << link_to(raw(" #{options[:publish_text]}"), options[:publish_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:publish_class]) if object.can_publish? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:unpublish_text]}"), options[:unpublish_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:unpublish_class]) if object.can_unpublish? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:remove_text]}"), options[:remove_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:remove_class]) if object.can_remove? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:archive_text]}"), options[:archive_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:archive_class]) if object.can_archive? && options[:has_permission_to_edit]
raw(links.join(""))
end
def display_featurable_links(object, **options)
options.reverse_merge!(
feature_icon: 'fa fa-star',
unfeature_icon: 'fa fa-star-o',
feature_link: url_for(action: 'mark_as_featured', controller: object.class.to_s.tableize, id: object.id),
unfeature_link: url_for(action: 'remove_from_featured', controller: object.class.to_s.tableize, id: object.id),
feature_text: "Mark as Featured",
unfeature_text: "Remove from Featured",
feature_class: "edit",
unfeature_class: "delete",
has_permission_to_edit: true
)
if @current_permission
options[:has_permission_to_edit] = @current_permission.can_update?
end
links = []
links << link_to(raw(" #{options[:feature_text]}"), options[:feature_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:feature_class]) unless object.featured? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:unfeature_text]}"), options[:unfeature_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:unfeature_class]) if object.featured? && options[:has_permission_to_edit]
raw(links.join(""))
end
def display_manage_links(object, current_user, **options)
options.reverse_merge!(
edit_icon: 'fa fa-edit',
delete_icon: 'fa fa-trash',
edit_link: url_for(action: "edit", controller: object.class.to_s.tableize, id: object.id),
delete_link: url_for(action: "destroy", controller: object.class.to_s.tableize, id: object.id),
edit_text: "Edit",
delete_text: "Delete",
edit_class: "edit",
delete_class: "",
has_permission_to_edit: true,
has_permission_to_delete: true
)
if @current_permission
options[:has_permission_to_edit] = @current_permission.can_update?
options[:has_permission_to_delete] = @current_permission.can_delete?
end
links = []
links << link_to(raw(" #{options[:edit_text]}"), options[:edit_link], remote: true, role: "menuitem", tabindex: "-1", class: options[:edit_class]) if object.can_be_edited? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:delete_text]}"), options[:delete_link], method: 'DELETE', remote: true, role: "menuitem", tabindex: "-1", class: options[:delete_class]) if object.can_be_deleted? && options[:has_permission_to_delete]
raw(links.join(""))
end
def display_publishable_buttons(object, **options)
options.reverse_merge!(
publish_icon: 'fa fa-check-square',
unpublish_icon: 'fa fa-square',
remove_icon: 'fa fa-close',
archive_icon: 'fa fa-archive',
publish_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "published"),
unpublish_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "unpublished"),
remove_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "removed"),
archive_link: url_for(action: 'update_status', controller: object.class.to_s.tableize, id: object.id, status: "archived"),
publish_text: "Publish",
unpublish_text: "UnPublish",
remove_text: "Remove",
archive_text: "Archive",
publish_class: "btn btn-block btn-success btn-only-hover",
unpublish_class: "btn btn-block btn-gray btn-only-hover",
remove_class: "btn btn-block btn-danger btn-only-hover",
archive_class: "btn btn-block btn-gray btn-only-hover",
has_permission_to_edit: true
)
if @current_permission
options[:has_permission_to_edit] = @current_permission.can_update?
end
links = []
links << link_to(raw(" #{options[:publish_text]}"), options[:publish_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:publish_class]) if object.can_publish? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:unpublish_text]}"), options[:unpublish_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:unpublish_class]) if object.can_unpublish? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:remove_text]}"), options[:remove_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:remove_class]) if object.can_remove? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:archive_text]}"), options[:archive_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:archive_class]) if object.can_archive? && options[:has_permission_to_edit]
raw(links.join(""))
end
def display_featurable_buttons(object, **options)
options.reverse_merge!(
feature_icon: 'fa fa-star',
unfeature_icon: 'fa fa-star-o',
feature_link: url_for(action: 'mark_as_featured', controller: object.class.to_s.tableize, id: object.id),
unfeature_link: url_for(action: 'remove_from_featured', controller: object.class.to_s.tableize, id: object.id),
feature_text: "Mark as Featured",
unfeature_text: "Remove from Featured",
feature_class: "btn btn-block btn-success btn-only-hover",
unfeature_class: "btn btn-block btn-danger btn-only-hover",
has_permission_to_edit: true
)
if @current_permission
options[:has_permission_to_edit] = @current_permission.can_update?
end
links = []
links << link_to(raw(" #{options[:feature_text]}"), options[:feature_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:feature_class]) unless object.featured? && options[:has_permission_to_edit]
links << link_to(raw(" #{options[:unfeature_text]}"), options[:unfeature_link], method: 'PUT', remote: true, role: "menuitem", tabindex: "-1", class: options[:unfeature_class]) if object.featured? && options[:has_permission_to_edit]
raw(links.join(""))
end
def display_manage_buttons(object, **options)
options.reverse_merge!(
edit_icon: 'fa fa-edit',
delete_icon: 'fa fa-trash',
edit_link: url_for(action: "edit", controller: object.class.to_s.tableize, id: object.id),
delete_link: url_for(action: "destroy", controller: object.class.to_s.tableize, id: object.id),
edit_text: "Edit",
delete_text: "Delete",
edit_class: "btn btn-block btn-success",
delete_class: "btn btn-block btn-danger btn-only-hover"
)
links = []
links << link_to(raw(" #{options[:edit_text]}"), options[:edit_link], remote: true, role: "menuitem", tabindex: "-1", class: options[:edit_class]) if object.can_be_edited?
links << link_to(raw(" #{options[:delete_text]}"), options[:delete_link], method: 'DELETE', remote: true, role: "menuitem", tabindex: "-1", class: options[:delete_class]) if object.can_be_deleted?
raw(links.join(""))
end
end