|
4 | 4 | module Administrate |
5 | 5 | module Field |
6 | 6 | class Base |
| 7 | + @partial_prefixes = {} |
| 8 | + |
| 9 | + class << self |
| 10 | + attr_writer :partial_prefixes |
| 11 | + end |
| 12 | + |
| 13 | + def self.inherited(subclass) |
| 14 | + super |
| 15 | + subclass.partial_prefixes = {} |
| 16 | + end |
| 17 | + |
7 | 18 | def self.with_options(options = {}) |
8 | 19 | Deferred.new(self, options) |
9 | 20 | end |
@@ -36,17 +47,22 @@ def self.permitted_attribute(attr, _options = nil) |
36 | 47 | attr |
37 | 48 | end |
38 | 49 |
|
39 | | - def self.partial_prefixes |
40 | | - @partial_prefixes ||= |
| 50 | + def self.partial_prefixes(look: :default) |
| 51 | + @partial_prefixes[look] ||= |
41 | 52 | if superclass.respond_to?(:partial_prefixes) |
42 | | - local_partial_prefixes + superclass.partial_prefixes |
| 53 | + local_partial_prefixes(look:) + superclass.partial_prefixes(look:) |
43 | 54 | else |
44 | | - local_partial_prefixes |
| 55 | + local_partial_prefixes(look:) |
45 | 56 | end |
46 | 57 | end |
47 | 58 |
|
48 | | - def self.local_partial_prefixes |
49 | | - ["fields/#{field_type}"] |
| 59 | + def self.local_partial_prefixes(look: :default) |
| 60 | + fallback = ["fields/#{field_type}/looks/default", "fields/#{field_type}"] |
| 61 | + if look == :default |
| 62 | + fallback |
| 63 | + else |
| 64 | + ["fields/#{field_type}/looks/#{look}"] + fallback |
| 65 | + end |
50 | 66 | end |
51 | 67 |
|
52 | 68 | def initialize(attribute, data, page, options = {}) |
@@ -84,7 +100,11 @@ def read_value(data) |
84 | 100 | end |
85 | 101 |
|
86 | 102 | def partial_prefixes |
87 | | - self.class.partial_prefixes |
| 103 | + self.class.partial_prefixes(look: look) |
| 104 | + end |
| 105 | + |
| 106 | + def look |
| 107 | + (options.fetch(:look, :default).presence || :default).to_sym |
88 | 108 | end |
89 | 109 |
|
90 | 110 | def required? |
|
0 commit comments