Files
ROC/modules/taxonomy/cms_vocabulary.e
Jocelyn Fiat 20dfce1396 Improved taxonomy by supporting tags, multiple terms allowed, and required kind of vocabulary for specific content type.
Updated node web form, to support taxonomy editing if allowed (specific support for CMS_VOCABULARY.is_tags: BOOLEAN).
Added notion of required or optional module dependencies.
2015-12-03 19:24:58 +01:00

129 lines
2.3 KiB
Plaintext

note
description: "[
Taxonomy vocabulary.
]"
date: "$Date$"
revision: "$Revision$"
class
CMS_VOCABULARY
inherit
CMS_TERM
rename
text as name,
set_text as set_name
redefine
make
end
ITERABLE [CMS_TERM]
undefine
is_equal
end
create
make,
make_with_id,
make_from_term,
make_none
feature {NONE} -- Initialization
make_none
do
make ("")
end
make (a_name: READABLE_STRING_GENERAL)
do
Precursor (a_name)
create terms.make (0)
end
make_from_term (a_term: CMS_TERM)
do
make_with_id (a_term.id, a_term.text)
description := a_term.description
set_weight (a_term.weight)
end
feature -- Access
terms: CMS_TERM_COLLECTION
-- Collection of terms.
new_cursor: INDEXABLE_ITERATION_CURSOR [CMS_TERM]
-- <Precursor>
do
Result := terms.new_cursor
end
feature -- Status report
associated_content_type: detachable READABLE_STRING_GENERAL
-- Associated content type, if any.
is_tags: BOOLEAN
-- New terms accepted (as tags), in the context of `associated_content_type'?
multiple_terms_allowed: BOOLEAN
-- Accepts multiple terms, in the context of `associated_content_type'?
is_term_required: BOOLEAN
-- At least one term is required, in the context of `associated_content_type'?
feature -- Element change
set_is_tags (b: BOOLEAN)
-- Set `is_tags' to `b'.
do
is_tags := b
end
allow_multiple_term (b: BOOLEAN)
-- Set `multiple_terms_allowed' to `b'.
do
multiple_terms_allowed := b
end
set_is_term_required (b: BOOLEAN)
-- Set `is_term_required' to `b'.
do
is_term_required := b
end
set_associated_content_type (a_type: detachable READABLE_STRING_GENERAL; a_is_tags, a_multiple, a_is_required: BOOLEAN)
-- If `a_type' is set, define `associated_content_type' and related options,
-- otherwise reset `associated_content_type'.
do
if a_type = Void then
associated_content_type := Void
set_is_tags (False)
allow_multiple_term (False)
set_is_term_required (False)
else
associated_content_type := a_type
set_is_tags (a_is_tags)
allow_multiple_term (a_multiple)
set_is_term_required (a_is_required)
end
end
feature -- Element change
force, extend (a_term: CMS_TERM)
-- Add `a_term' to the vocabulary terms `terms'.
do
terms.force (a_term)
end
sort
-- Sort `items'
do
terms.sort
end
end