Merged CMS_BLOG_CONFIG with CMS_BLOG_API. In CMS_BLOG_API, prefer argument of type CMS_USER, rather than using directly user id. Added a CMS_EDITOR_CONTENT_FORMAT for now, to be the format editable by the WYSIWYG editor. Added CMS_MODULE.is_initialized: BOOLEAN to equip router, and module_api with expected preconditions. Fixed typo, especially in log output. Corrected a few routine names such as add_authors that should not be a function according to its name. Converted various function returning html content, to procedure appending html content to an output string to minimize temporary string object creation. Cosmetic: added spaces to make code easier to read, and indentation.
107 lines
3.6 KiB
Plaintext
107 lines
3.6 KiB
Plaintext
note
|
|
description: "Class to import a WYSIWIG editor using javascript code"
|
|
author: "Dario Bösch <daboesch@student.ethz.ch"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
|
|
deferred class
|
|
CMS_EDITOR
|
|
|
|
feature -- Initialisation
|
|
load_assets : STRING
|
|
-- Loads all assest needed to show the editor
|
|
deferred
|
|
end
|
|
|
|
feature -- Javascript
|
|
|
|
javascript_replace_textarea (a_textarea : WSF_FORM_TEXTAREA) : STRING
|
|
-- Javascript code that replaces a textarea with the editor. The editor instance should be saved in editor_variable
|
|
deferred
|
|
end
|
|
|
|
javascript_restore_textarea (a_textarea : WSF_FORM_TEXTAREA) : STRING
|
|
-- Javascript code that restores a textarea
|
|
deferred
|
|
end
|
|
|
|
javascript_textarea_to_editor(a_textarea : WSF_FORM_TEXTAREA) : STRING
|
|
-- Javascript code to display the textarea as a WYSIWIG editor as soon as the document is loaded
|
|
do
|
|
Result := javascript_ready(javascript_replace_textarea (a_textarea))
|
|
end
|
|
|
|
javascript_textarea_to_editor_if_selected (a_textarea : WSF_FORM_TEXTAREA; a_select_field : WSF_FORM_SELECT; a_value : STRING) : STRING
|
|
-- Javascript code to display the textarea as a WYSIWIG editor if a_select_field has a_value
|
|
local
|
|
initial_replace_code, on_select_replace_code : STRING
|
|
do
|
|
-- Javascript that replaces the textarea if a_value is selected at load time
|
|
initial_replace_code := javascript_ready(javascript_if_selected(a_select_field, a_value, javascript_replace_textarea(a_textarea)))
|
|
|
|
-- Javascript code that replaces the textarea as soon as value is selected at a_select_field
|
|
on_select_replace_code := javascript_ready(
|
|
javascript_init_editor_variable(a_textarea) +
|
|
javascript_on_select(a_select_field, a_value,
|
|
-- If a_value is selected, replace textarea
|
|
javascript_replace_textarea(a_textarea),
|
|
|
|
-- Otherwise restore it
|
|
javascript_restore_textarea(a_textarea)
|
|
)
|
|
)
|
|
|
|
Result := initial_replace_code + " " + on_select_replace_code
|
|
end
|
|
|
|
javascript_init_editor_variable(a_textarea : WSF_FORM_TEXTAREA) : STRING
|
|
-- Returns the javascript code that initializes a local variable to store the editor instance
|
|
do
|
|
Result := "var " + editor_variable(a_textarea) + "; "
|
|
end
|
|
|
|
|
|
|
|
javascript_if_selected(a_select_field : WSF_FORM_SELECT; a_value : STRING; a_code : STRING) : STRING
|
|
-- Javascript that executes a_code if a_value is selected at a_select_field
|
|
do
|
|
Result := "if($('#" + field_id(a_select_field) + "').val() == %"" + a_value + "%"){ " + a_code + " }"
|
|
end
|
|
|
|
javascript_ready (a_code : STRING) : STRING
|
|
-- Wraps the given javascript code with a ready statement, such that it's executed when the document has loaded
|
|
do
|
|
Result := "$(function() { " + a_code + " });"
|
|
end
|
|
|
|
javascript_on_select (a_select_field : WSF_FORM_SELECT; a_value : STRING; a_then : STRING; a_else : STRING) : STRING
|
|
-- Javascript code that executes a_then if at the given select_field the given string value is selected, otherwise it executes a_else
|
|
do
|
|
Result := "$('#" + field_id(a_select_field) + "').change(function(){" +
|
|
javascript_if_selected(a_select_field, a_value, a_then) +
|
|
"else{" +
|
|
a_else +
|
|
"}" +
|
|
"});"
|
|
end
|
|
|
|
feature -- Helper
|
|
|
|
field_id(a_select_field : WSF_FORM_SELECT) : STRING
|
|
-- Returns the id of the given field
|
|
do
|
|
if attached a_select_field.css_id as a_id then
|
|
Result := a_id
|
|
else
|
|
Result := a_select_field.name + "-select"
|
|
end
|
|
end
|
|
|
|
editor_variable (a_textarea : WSF_FORM_TEXTAREA) : STRING
|
|
-- Returns the variable name that stores the editor instance of the given textarea
|
|
do
|
|
Result := "editor_" + a_textarea.name
|
|
end
|
|
|
|
end
|