Module: Card::Setting
- Included in:
- Card::Set::Self::Accountable, Card::Set::Self::AddHelp, Card::Set::Self::Autoname, Card::Set::Self::Captcha, Card::Set::Self::Create, Card::Set::Self::Default, Card::Set::Self::Delete, Card::Set::Self::Follow, Card::Set::Self::Help, Card::Set::Self::Input, Card::Set::Self::Layout, Card::Set::Self::OnCreate, Card::Set::Self::OnDelete, Card::Set::Self::OnUpdate, Card::Set::Self::Options, Card::Set::Self::OptionsLabel, Card::Set::Self::Read, Card::Set::Self::Script, Card::Set::Self::Structure, Card::Set::Self::Style, Card::Set::Self::TableOfContents, Card::Set::Self::Thanks, Card::Set::Self::Update
- Defined in:
- mod/04_settings/lib/card/setting.rb
Overview
Used to extend setting modules like Card::Set::Self::Create in the settings mod
Constant Summary collapse
- @@group_names =
{ templating: 'Templating', permission: 'Permissions', webpage: 'Webpage', pointer: 'Pointer', editing_cue: 'Editing cues', event: 'Events', other: 'Other', config: 'Config' }
- @@groups =
@@group_names.keys.each_with_object({}) do |key, groups| groups[key] = [] end
- @@user_specific =
::Set.new
Instance Attribute Summary collapse
-
#codename ⇒ Object
Let M = Card::Setting (module) E = Card::Set::Self::Create (module extended with M) O = Card (object) accessible in E.
Class Method Summary collapse
Instance Method Summary collapse
- #applies_to_cardtype(type_id) ⇒ Object
- #set_position(group, pos) ⇒ Object
-
#setting_opts(opts) ⇒ Object
usage: setting_opts group: :permission | :event | …
- #to_type_id(type) ⇒ Object
Instance Attribute Details
#codename ⇒ Object
Let M = Card::Setting (module)
E = Card::Set::Self::Create (module extended with M)
O = Card['*create'] (object)
accessible in E
11 12 13 |
# File 'mod/04_settings/lib/card/setting.rb', line 11 def codename @codename end |
Class Method Details
.extended(host_class) ⇒ Object
14 15 16 17 |
# File 'mod/04_settings/lib/card/setting.rb', line 14 def self.extended host_class # accessible in E and O host_class.mattr_accessor :restricted_to_type, :rule_type_editable end |
.user_specific?(codename) ⇒ Boolean
34 35 36 |
# File 'mod/04_settings/lib/card/setting.rb', line 34 def self.user_specific? codename @@user_specific.include? codename end |
Instance Method Details
#applies_to_cardtype(type_id) ⇒ Object
78 79 80 |
# File 'mod/04_settings/lib/card/setting.rb', line 78 def applies_to_cardtype type_id !restricted_to_type || restricted_to_type.include?(type_id) end |
#set_position(group, pos) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 |
# File 'mod/04_settings/lib/card/setting.rb', line 66 def set_position group, pos if pos if @@groups[group][pos - 1] @@groups[group].insert(pos - 1, self) else @@groups[group][pos - 1] = self end else @@groups[group] << self end end |
#setting_opts(opts) ⇒ Object
usage: setting_opts group: :permission | :event | …
position: <Fixnum> (starting at 1, default: add to end)
rule_type_editable: true | false (default: false)
restricted_to_type: <cardtype> | [ <cardtype>, ...]
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'mod/04_settings/lib/card/setting.rb', line 47 def setting_opts opts group = opts[:group] || :other @@groups[group] ||= [] set_position group, opts[:position] @codename = opts[:codename] || name.match(/::(\w+)$/)[1].underscore.to_sym self.rule_type_editable = opts[:rule_type_editable] self.restricted_to_type = if opts[:restricted_to_type] type_ids = [opts[:restricted_to_type]].flatten.map do |cardtype| to_type_id(cardtype) end ::Set.new(type_ids) end return unless opts[:user_specific] @@user_specific << @codename end |