Module: CamaleonCms::Metas
- Extended by:
- ActiveSupport::Concern
- Included in:
- CustomField, PostComment, PostDefault, TermTaxonomy, User
- Defined in:
- app/models/concerns/camaleon_cms/metas.rb
Overview
Camaleon CMS is a content management system
Copyright (C) 2015 by Owen Peredo Diaz
Email: [email protected]
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU Affero General Public License (GPLv3) for more details.
Instance Method Summary collapse
-
#delete_meta(key) ⇒ Object
delete meta.
-
#delete_option(key, meta_key = "_default") ⇒ Object
delete attribute from configuration.
-
#fix_save_metas_options_no_changed ⇒ Object
fix to save options and metas when a model was not changed.
-
#get_meta(key, default = nil) ⇒ Object
return value of meta with key: key, if meta not exist, return default return default if meta value == “”.
-
#get_option(key = nil, default = nil, meta_key = "_default") ⇒ Object
return configuration for current object key: attribute name default: if attribute not exist, return default return default if option value == “” return value for attribute.
-
#options(meta_key = "_default") ⇒ Object
return configurations for current object, sample: “type”:“post_type”,“object_id”:“127”.
-
#save_metas_options ⇒ Object
save all settings for this post type received in data_options and data_metas attribute (options and metas) sample: Site.first.post_types.create(“owen”, slug: “my_post_type”, data_options: { has_category: true, default_layout: “my_layout” }).
-
#save_metas_options_skip ⇒ Object
permit to skip save_metas_options in specific models.
-
#set_meta(key, value) ⇒ Object
Add meta with value or Update meta with key: key return true or false.
-
#set_metas(data_metas) ⇒ Object
save multiple metas sample: set_metas(‘Owen’, email: ‘[email protected]’).
-
#set_multiple_options(h = {}, meta_key = "_default") ⇒ Object
(also: #set_options)
set multiple configurations h: “sdsds”, ff: “fdfdfdfd”.
-
#set_option(key, value = nil, meta_key = "_default") ⇒ Object
add configuration for current object key: attribute name value: attribute value meta_key: (String) name of the meta attribute sample: mymodel.set_custom_option(“my_settings”, “color”, “red”).
Instance Method Details
#delete_meta(key) ⇒ Object
delete meta
44 45 46 47 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 44 def (key) .where(key: key).destroy_all cama_remove_cache("meta_#{key}") end |
#delete_option(key, meta_key = "_default") ⇒ Object
delete attribute from configuration
79 80 81 82 83 84 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 79 def delete_option(key, = "_default") values = () key = key.to_sym values.delete(key) if values.has_key?(key) (, values) end |
#fix_save_metas_options_no_changed ⇒ Object
fix to save options and metas when a model was not changed
113 114 115 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 113 def #unless self.changed? end |
#get_meta(key, default = nil) ⇒ Object
return value of meta with key: key, if meta not exist, return default return default if meta value == “”
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 30 def (key, default = nil) key_str = key.is_a?(Symbol) ? key.to_s : key cama_fetch_cache("meta_#{key_str}") do option = .where(key: key_str).first res = '' if option.present? value = JSON.parse(option.value) rescue option.value res = (value.is_a?(Hash) ? value.with_indifferent_access : value) rescue option.value end res == '' ? default : res end end |
#get_option(key = nil, default = nil, meta_key = "_default") ⇒ Object
return configuration for current object key: attribute name default: if attribute not exist, return default return default if option value == “” return value for attribute
72 73 74 75 76 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 72 def get_option(key = nil, default = nil, = "_default") values = () key = key.to_sym values.has_key?(key) && values[key] != "" ? values[key] : default end |
#options(meta_key = "_default") ⇒ Object
return configurations for current object, sample: “type”:“post_type”,“object_id”:“127”
50 51 52 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 50 def ( = "_default") (, {}) end |
#save_metas_options ⇒ Object
save all settings for this post type received in data_options and data_metas attribute (options and metas) sample: Site.first.post_types.create(“owen”, slug: “my_post_type”, data_options: { has_category: true, default_layout: “my_layout” })
119 120 121 122 123 124 125 126 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 119 def () if .present? .each do |key, val| (key, val) end end end |
#save_metas_options_skip ⇒ Object
permit to skip save_metas_options in specific models
108 109 110 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 108 def false end |
#set_meta(key, value) ⇒ Object
Add meta with value or Update meta with key: key return true or false
22 23 24 25 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 22 def (key, value) .where(key: key).update_or_create({value: (value)}) cama_set_cache("meta_#{key}", value) end |
#set_metas(data_metas) ⇒ Object
save multiple metas sample: set_metas(‘Owen’, email: ‘[email protected]’)
101 102 103 104 105 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 101 def () .each do |key, value| self.(key, value) end end |
#set_multiple_options(h = {}, meta_key = "_default") ⇒ Object Also known as: set_options
set multiple configurations h: “sdsds”, ff: “fdfdfdfd”
88 89 90 91 92 93 94 95 96 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 88 def (h = {}, = "_default") if h.present? data = () h.to_sym.each do |key, value| data[key] = (value) end (, data) end end |
#set_option(key, value = nil, meta_key = "_default") ⇒ Object
add configuration for current object key: attribute name value: attribute value meta_key: (String) name of the meta attribute sample: mymodel.set_custom_option(“my_settings”, “color”, “red”)
59 60 61 62 63 64 65 |
# File 'app/models/concerns/camaleon_cms/metas.rb', line 59 def set_option(key, value = nil, = "_default") return if key.nil? data = () data[key] = (value) (, data) value end |