Redesigned the CMS_BLOCK system,
- added condition attribute. It can be set via configuration file
with
[blocks]
{blockid}.region={region_name}
{blockid}.conditions[]=is_front
{blockid}.conditions[]=path:location-path/foo/bar
- For backward compatibility, the CMS will check only conditions for block name prefixed by "?".
Improved the configuration library to support list and table properties.
Updated theme for now, to include the feed examples.
Added "cache" classes, to ease caching of html output for instance. (TODO: improve by providing a cache manager).
164 lines
4.0 KiB
Plaintext
164 lines
4.0 KiB
Plaintext
note
|
|
description: "Summary description for {CONFIG_READER}."
|
|
author: ""
|
|
date: "$Date: 2014-12-18 16:37:11 +0100 (jeu., 18 déc. 2014) $"
|
|
revision: "$Revision: 96383 $"
|
|
|
|
deferred class
|
|
CONFIG_READER
|
|
|
|
inherit
|
|
SHARED_EXECUTION_ENVIRONMENT
|
|
|
|
feature -- Status report
|
|
|
|
has_item (k: READABLE_STRING_GENERAL): BOOLEAN
|
|
-- Has item associated with key `k'?
|
|
deferred
|
|
end
|
|
|
|
has_error: BOOLEAN
|
|
-- Has error?
|
|
--| Syntax error, source not found, ...
|
|
deferred
|
|
end
|
|
|
|
feature -- Query
|
|
|
|
resolved_text_item (k: READABLE_STRING_GENERAL): detachable READABLE_STRING_32
|
|
-- String item associated with key `k' and expanded to resolved variables ${varname}.
|
|
do
|
|
if attached text_item (k) as s then
|
|
Result := resolved_expression (s)
|
|
end
|
|
end
|
|
|
|
resolved_text_list_item (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
|
-- List of String item associated with key `k',
|
|
-- and expanded values to resolved variables ${varname}.
|
|
do
|
|
if attached text_list_item (k) as lst then
|
|
from
|
|
lst.start
|
|
until
|
|
lst.after
|
|
loop
|
|
lst.replace (resolved_expression (lst.item))
|
|
lst.forth
|
|
end
|
|
end
|
|
end
|
|
|
|
resolved_text_table_item (k: READABLE_STRING_GENERAL): detachable STRING_TABLE [READABLE_STRING_32]
|
|
-- Table of String item associated with key `k',
|
|
-- and expanded values to resolved variables ${varname}.
|
|
do
|
|
if attached text_table_item (k) as tb then
|
|
from
|
|
tb.start
|
|
until
|
|
tb.after
|
|
loop
|
|
tb.replace (resolved_expression (tb.item_for_iteration), tb.key_for_iteration)
|
|
tb.forth
|
|
end
|
|
end
|
|
end
|
|
|
|
text_item (k: READABLE_STRING_GENERAL): detachable READABLE_STRING_32
|
|
-- String item associated with key `k'.
|
|
deferred
|
|
end
|
|
|
|
text_list_item (k: READABLE_STRING_GENERAL): detachable LIST [READABLE_STRING_32]
|
|
-- List of String item associated with key `k'.
|
|
deferred
|
|
end
|
|
|
|
text_table_item (k: READABLE_STRING_GENERAL): detachable STRING_TABLE [READABLE_STRING_32]
|
|
-- Table of String item associated with key `k'.
|
|
deferred
|
|
end
|
|
|
|
integer_item (k: READABLE_STRING_GENERAL): INTEGER
|
|
-- Integer item associated with key `k'.
|
|
deferred
|
|
ensure
|
|
not has_item (k) implies Result = 0
|
|
end
|
|
|
|
feature {NONE} -- Implementation
|
|
|
|
resolved_items: detachable STRING_TABLE [READABLE_STRING_32]
|
|
-- Resolved items indexed by expression.
|
|
|
|
resolved_expression (exp: READABLE_STRING_GENERAL): STRING_32
|
|
-- Resolved `exp' using `Current' or else environment variables.
|
|
local
|
|
i,n,b,e: INTEGER
|
|
k: detachable READABLE_STRING_GENERAL
|
|
c: CHARACTER_32
|
|
l_resolved_items: like resolved_items
|
|
l_text: detachable READABLE_STRING_GENERAL
|
|
do
|
|
from
|
|
i := 1
|
|
n := exp.count
|
|
create Result.make (n)
|
|
until
|
|
i > n
|
|
loop
|
|
c := exp[i]
|
|
if i + 1 < n and then c = '$' and then exp[i+1] = '{' then
|
|
b := i + 2
|
|
e := exp.index_of ('}', b) - 1
|
|
if e > 0 then
|
|
k := exp.substring (b, e)
|
|
l_text := Void
|
|
l_resolved_items := resolved_items
|
|
if
|
|
l_resolved_items /= Void and then
|
|
attached l_resolved_items.item (k) as s
|
|
then
|
|
-- Already resolved, reuse value.
|
|
l_text := s
|
|
elseif attached text_item (k) as s then
|
|
-- has such item
|
|
l_text := s
|
|
elseif attached execution_environment.item (k) as v then
|
|
-- Or from environment
|
|
l_text := v
|
|
else
|
|
l_text := exp.substring (i, e + 1)
|
|
end
|
|
i := e + 1
|
|
Result.append_string_general (l_text)
|
|
else
|
|
Result.extend (c)
|
|
end
|
|
else
|
|
Result.extend (c)
|
|
end
|
|
i := i + 1
|
|
end
|
|
end
|
|
|
|
feature -- Duplication
|
|
|
|
sub_config (k: READABLE_STRING_GENERAL): detachable CONFIG_READER
|
|
-- Configuration representing a subset of Current for key `k'.
|
|
deferred
|
|
end
|
|
|
|
note
|
|
copyright: "2011-2015, Jocelyn Fiat, Eiffel Software and others"
|
|
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"
|
|
source: "[
|
|
Eiffel Software
|
|
5949 Hollister Ave., Goleta, CA 93117 USA
|
|
Telephone 805-685-1006, Fax 805-685-6869
|
|
Website http://www.eiffel.com
|
|
Customer support http://support.eiffel.com
|
|
]"
|
|
end
|