From 68803264c6476fd96311bc83937f04164348cce4 Mon Sep 17 00:00:00 2001
From: cash
Date: Wed, 26 Jan 2011 11:55:03 +0000
Subject: moving ecml to plugins repository as it won't be a part of 1.8.0. It
will be back though...
git-svn-id: http://code.elgg.org/elgg/trunk@7938 36083f99-b078-4883-b0ff-0f9b5a30f544
---
mod/ecml/README.txt | 226 ----------------
mod/ecml/actions/save_permissions.php | 37 ---
mod/ecml/ecml_functions.php | 289 --------------------
mod/ecml/graphics/dailymotion.png | Bin 179131 -> 0 bytes
mod/ecml/graphics/ecml.png | Bin 341 -> 0 bytes
mod/ecml/graphics/googlemaps.png | Bin 150177 -> 0 bytes
mod/ecml/graphics/logo_bliptv.gif | Bin 2048 -> 0 bytes
mod/ecml/graphics/logo_dailymotion.gif | Bin 2270 -> 0 bytes
mod/ecml/graphics/logo_googlemaps.gif | Bin 2632 -> 0 bytes
mod/ecml/graphics/logo_livevideo.gif | Bin 2234 -> 0 bytes
mod/ecml/graphics/logo_redlasso.gif | Bin 2078 -> 0 bytes
mod/ecml/graphics/logo_slideshare.gif | Bin 3039 -> 0 bytes
mod/ecml/graphics/logo_vimeo.gif | Bin 1783 -> 0 bytes
mod/ecml/graphics/logo_youtube.gif | Bin 2174 -> 0 bytes
mod/ecml/graphics/redlasso_1.png | Bin 178296 -> 0 bytes
mod/ecml/graphics/redlasso_2.png | Bin 162730 -> 0 bytes
mod/ecml/graphics/slideshare.png | Bin 149631 -> 0 bytes
mod/ecml/graphics/url_status.png | Bin 2001 -> 0 bytes
mod/ecml/graphics/vimeo.png | Bin 174545 -> 0 bytes
mod/ecml/graphics/youtube.png | Bin 158669 -> 0 bytes
mod/ecml/languages/en.php | 92 -------
mod/ecml/manifest.xml | 13 -
mod/ecml/start.php | 298 ---------------------
mod/ecml/views/default/ecml/admin/css.php | 156 -----------
mod/ecml/views/default/ecml/help.php | 28 --
mod/ecml/views/default/ecml/help/blip.tv.php | 12 -
mod/ecml/views/default/ecml/help/dailymotion.php | 12 -
mod/ecml/views/default/ecml/help/googlemaps.php | 12 -
mod/ecml/views/default/ecml/help/livevideo.php | 12 -
mod/ecml/views/default/ecml/help/redlasso.php | 13 -
mod/ecml/views/default/ecml/help/slideshare.php | 12 -
mod/ecml/views/default/ecml/help/vimeo.php | 12 -
mod/ecml/views/default/ecml/help/youtube.php | 12 -
mod/ecml/views/default/ecml/input_ext.php | 10 -
mod/ecml/views/default/ecml/keyword_help.php | 18 --
mod/ecml/views/default/ecml/keywords/blip.tv.php | 19 --
.../views/default/ecml/keywords/dailymotion.php | 27 --
mod/ecml/views/default/ecml/keywords/entity.php | 22 --
.../views/default/ecml/keywords/googlemaps.php | 23 --
mod/ecml/views/default/ecml/keywords/livevideo.php | 25 --
mod/ecml/views/default/ecml/keywords/redlasso.php | 23 --
.../views/default/ecml/keywords/slideshare.php | 30 ---
mod/ecml/views/default/ecml/keywords/user_list.php | 43 ---
mod/ecml/views/default/ecml/keywords/vimeo.php | 50 ----
mod/ecml/views/default/ecml/keywords/youtube.php | 39 ---
.../views/default/embed/web_services/content.php | 220 ---------------
mod/ecml/views/default/settings/ecml/edit.php | 133 ---------
47 files changed, 1918 deletions(-)
delete mode 100644 mod/ecml/README.txt
delete mode 100644 mod/ecml/actions/save_permissions.php
delete mode 100644 mod/ecml/ecml_functions.php
delete mode 100644 mod/ecml/graphics/dailymotion.png
delete mode 100644 mod/ecml/graphics/ecml.png
delete mode 100644 mod/ecml/graphics/googlemaps.png
delete mode 100644 mod/ecml/graphics/logo_bliptv.gif
delete mode 100644 mod/ecml/graphics/logo_dailymotion.gif
delete mode 100644 mod/ecml/graphics/logo_googlemaps.gif
delete mode 100644 mod/ecml/graphics/logo_livevideo.gif
delete mode 100644 mod/ecml/graphics/logo_redlasso.gif
delete mode 100644 mod/ecml/graphics/logo_slideshare.gif
delete mode 100644 mod/ecml/graphics/logo_vimeo.gif
delete mode 100644 mod/ecml/graphics/logo_youtube.gif
delete mode 100644 mod/ecml/graphics/redlasso_1.png
delete mode 100644 mod/ecml/graphics/redlasso_2.png
delete mode 100644 mod/ecml/graphics/slideshare.png
delete mode 100644 mod/ecml/graphics/url_status.png
delete mode 100644 mod/ecml/graphics/vimeo.png
delete mode 100644 mod/ecml/graphics/youtube.png
delete mode 100644 mod/ecml/languages/en.php
delete mode 100644 mod/ecml/manifest.xml
delete mode 100644 mod/ecml/start.php
delete mode 100644 mod/ecml/views/default/ecml/admin/css.php
delete mode 100644 mod/ecml/views/default/ecml/help.php
delete mode 100644 mod/ecml/views/default/ecml/help/blip.tv.php
delete mode 100644 mod/ecml/views/default/ecml/help/dailymotion.php
delete mode 100644 mod/ecml/views/default/ecml/help/googlemaps.php
delete mode 100644 mod/ecml/views/default/ecml/help/livevideo.php
delete mode 100644 mod/ecml/views/default/ecml/help/redlasso.php
delete mode 100644 mod/ecml/views/default/ecml/help/slideshare.php
delete mode 100644 mod/ecml/views/default/ecml/help/vimeo.php
delete mode 100644 mod/ecml/views/default/ecml/help/youtube.php
delete mode 100644 mod/ecml/views/default/ecml/input_ext.php
delete mode 100644 mod/ecml/views/default/ecml/keyword_help.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/blip.tv.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/dailymotion.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/entity.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/googlemaps.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/livevideo.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/redlasso.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/slideshare.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/user_list.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/vimeo.php
delete mode 100644 mod/ecml/views/default/ecml/keywords/youtube.php
delete mode 100644 mod/ecml/views/default/embed/web_services/content.php
delete mode 100644 mod/ecml/views/default/settings/ecml/edit.php
diff --git a/mod/ecml/README.txt b/mod/ecml/README.txt
deleted file mode 100644
index 3c18998cc..000000000
--- a/mod/ecml/README.txt
+++ /dev/null
@@ -1,226 +0,0 @@
-ECML - Elgg Customizable Markup Language
-
-CONTENTS:
- 1. Overview
- 2. Security
- 3. Using ECML Keywords
- 3.1 Utility keywords 'entity' and 'view'
- 3.2 Embedded 3rd party media
- 4. Custom ECML Keywords
- 5. Embed support
- 6. Hints and Quirks
-
-
-1. OVERVIEW
-
- ECML adds support for an extensible keyword system that allows users
- to quickly add elements and embed media in their content. The ECML
- control panel can be used to granularly allow ECML keywords in certain
- contexts and views.
-
-
-2. SECURITY
-
- From the ECML control panel in the administration section the
- administrator can select which sections of the site support
- ECML. For each section registered to display ECML, the administrator
- can select which keywords to deny. For example, this is useful to
- prevent users from inserting an Elgg view into a blog page.
-
-3. USING ECML KEYWORDS
-
- All ECML keywords are surrounded by square brackets: [ and ].
- Some keywords, like views and entity lists, take optional parameters.
-
- Examples:
- [userlist] -- Display up to 10 newest users.
- [youtube src="http://www.youtube.com/watch?v=kCpjgl2baLs"] -- Embed a YouTube video.
- [view src="input/text"] -- Display a textarea
-
-
-3.1 UTILITY KEYWORDS 'entity' AND 'view'
-
- ECML includes a few built-in keywords to get you started. They are
- mainly for embedding content from 3rd party sites, but also include
- two utility views to help non-programmers quickly display content.
-
- The two utility keywords available are [entity] and [view].
-
- [entity] - Displays a list of entities using similar arguments to the
- elgg_get_entities() function. See documentation for that function for
- the full list of supported arguments and default values.
-
- Additional / changed parameters supported by keywords:
- * owner: The username owner. (You can still use owner_guid)
-
- Example: Displays a list of all blog posts by the user named 'admin':
- [entity type=object subtype=blog owner=admin]
-
- Example: Displays newest group created:
- [entity type=object subtype=group limit=1]
-
-
- [view] - Displays a valid Elgg view passing any optional parameters to
- the view.
-
- Example: Display a text input:
- [view src="input/text"]
-
- Example: Display a textarea with a default value:
- [view src="input/longtext" value="This is an example of a quoted value!"]
-
-
-3.2 EMBEDDED 3RD PARTY MEDIA
-
- ECML provides support for embedding media from a few of the most common
- media sites:
-
- * Youtube -- [youtube src="URL"]
- * Vimeo -- [vimeo src="URL"]
- * Slideshare -- [slideshare id="ID"] (NB: Use the "wordpress.com" embed
- link)
-
-
-4 CUSTOM ECML KEYWORDS (AKA "THE 'C' in ECML)
-
- Plugins can add their own ECML keywords. Each keyword must be bound to
- a valid view. Almost all functionality in custom keywords could be
- implemented using the 'view' keyword, but custom keywords provide a
- simple way for non-techy users to include ready-made views without
- the fuss of knowing what they're doing.
-
- To register your own ECML keywords, reply to the 'get_keywords'
- hook of type 'ecml' and append to the passed array with a key that is
- your keyword name and a value that is an array of a view, a description,
- and usage instructions.
-
- Optionally, the array can pass a 'restricted' => array() value of views
- that this keyword is valid in. This is not overrideable by the admin
- interface and is useful for forcing security on possibly dangerous
- keywords.
-
- Arguments passed to the keyword are accessible to the keyword view via
- the $vars array. It is the responsibility of the custom view to parse
- these arguments.
-
- The below example creates the 'buttonizer' keyword that turns the user's
- text into an HTML button. It uses the view at 'buttonizer/ecml/buttonizer.'
-
- How a user will call the keyword:
-
- [buttonizer text="This is my button!"]
-
- How to implement this in a plugin:
-
- buttonizer/start.php:
- register_plugin_hook('get_keywords', 'ecml', 'buttonizer_ecml_keywords');
-
- function buttonizer_ecml_keywords($hook, $type, $value, $params) {
- $value['buttonizer'] = array(
- 'name' => 'Buttonizer',
- 'view' => 'buttonizer/ecml/buttonizer',
- 'description' => 'Makes your text a button! What could be better?',
- 'usage' => 'Use [buttonizer text="My text"] to make "My text" a button!'
- );
-
- return $value;
- }
-
- buttonizer/views/default/buttonizer/ecml/buttonizer.php:
- $text = $vars['text'];
-
- echo elgg_view('input/button', array(
- 'value' => $text,
- 'type' => 'button'
- ));
-
- This is exactly the same as saying:
-
- [view src="buttonizer/ecml/buttonizer" text="This is my button!"]
-
- or even:
-
- [view src="input/button" value="This is my button!" type="button"]
-
- but is much simpler for the user.
-
-
-5. EMBED SUPPORT
-
- ECML and the Embed plugin are closely related in that Embed serves
- as a sort of front end for ECML. Especially with 3rd party web
- services, where URLs and embed codes vary greatly, having a system
- in place that allows a user to easily generate and insert ECML
- is benificial.
-
- Currently, only web services ECML keywords are supported in the
- embed plugin. Registering a web service keyword looks like this:
-
- $value[youtube] = array(
- 'name' => 'Youtube',
- 'view' => "ecml/keywords/youtube",
- 'description' => 'Embed YouTube videos',
- 'usage' => 'Use src="URL".',
-
- // important bits
- 'type' => 'web_service',
- 'params' => array('src', 'width', 'height') // a list of supported params
- 'embed' => 'src="%s"' // a sprintf string of the require param format. Added automatically to [keyword $here]
- );
-
-
-6. HINTS AND QUIRKS
-
- * A custom keyword is slightly more complicated to implement, but is
- much simpler for the end user to use.
-
- * A custom keyword is safer. Since ECML can be disabled for certain
- views, many administrators disable the entity and view keywords in
- user-accessible pages like blogs, pages, and files.
-
- * Custom keywords can contain only alphanumeric characters.
-
- * To pass a complex argument to a keyword, quote the value.
-
- * If making a custom keyword, avoid underscores in your params. They
- look funny.
-
- * Are disabled keywords in comments still working? This is probably
- because a parent view is including comments directly. For example:
-
- blog page handler:
- ...logic...
- echo elgg_view_entity($blog);
- ...logic...
-
- view object/blog:
- ...logic...
- echo $blog;
- echo elgg_view_comments($blog);
-
- The output of object/blog includes the output of the comments, so if
- the view object/blog allows the youtube the comments will also be parsed
- for ECML. The solution is to keep views for the object and comments
- separate.
-
- blog page handler:
- echo elgg_view_entity($blog);
- ...logic...
- echo elgg_view_comments($blog);
-
- view object/blog:
- ...logic...
- echo $blog
-
- Alternatively, you can keep the blog and comments in the object view, but
- pull out the blog into its own view to register with ECML.
-
- view object/blog:
- ...logic...
- echo elgg_view('blog/blog', array('blog' => $blog);
- ...logic...
- elgg_view_comments($blog);
-
- view blog/blog:
- ...logic...
- echo $blog
\ No newline at end of file
diff --git a/mod/ecml/actions/save_permissions.php b/mod/ecml/actions/save_permissions.php
deleted file mode 100644
index f32544d86..000000000
--- a/mod/ecml/actions/save_permissions.php
+++ /dev/null
@@ -1,37 +0,0 @@
-ecml_keywords;
-$views = $CONFIG->ecml_parse_views;
-
-// the front end uses a white list but the backend uses a
-// blacklist for performance and extensibility.
-// gotta convert.
-$perms = array();
-
-foreach ($views as $view => $view_info) {
- foreach ($keywords as $keyword => $keyword_info) {
-
- // don't need to add perms for restricted keywords
- // because those perms are checked separately
- if (isset($keyword_info['restricted'])) {
- continue;
- }
- if (!isset($whitelist[$view]) || !in_array($keyword, $whitelist[$view])) {
- $perms[$view][] = $keyword;
- }
- }
-}
-
-if (set_plugin_setting('ecml_permissions', serialize($perms), 'ecml')) {
- system_message(elgg_echo('ecml:admin:permissions_saved'));
-} else {
- register_error(elgg_echo('ecml:admin:cannot_save_permissions'));
-}
-
-forward(REFERER);
diff --git a/mod/ecml/ecml_functions.php b/mod/ecml/ecml_functions.php
deleted file mode 100644
index 4d30ee9c7..000000000
--- a/mod/ecml/ecml_functions.php
+++ /dev/null
@@ -1,289 +0,0 @@
-ecml_current_view = $view;
-
- return preg_replace_callback(ECML_KEYWORD_REGEX, 'ecml_parse_view_match', $string);
-}
-
-/**
- * Returns ECML-style keywords found in $string.
- * Doesn't validate them.
- * Returns an array of keyword => arguments
- *
- * @param string $string
- * @return array
- */
-function ecml_extract_keywords($string) {
- $return = array();
-
- if (preg_match_all(ECML_KEYWORD_REGEX, $string, $matches)) {
- foreach ($matches[1] as $i => $keyword) {
- $return[] = array('keyword' => $keyword, 'params' => $matches[2][$i]);
- }
- }
-
- return $return;
-}
-
-/**
- * Parse ECML keywords
- *
- * @param array $matches
- * @return string html
- */
-function ecml_parse_view_match($matches) {
- global $CONFIG;
-
- $view = $CONFIG->ecml_current_view;
-
- $keyword = trim($matches[1]);
- $params_string = trim($matches[2]);
-
- // reject keyword if blacklisted for view or invalid
- if (!ecml_is_valid_keyword($keyword, $view)) {
- return $matches[0];
- }
-
- switch ($keyword) {
- case 'entity_list':
- $options = ecml_keywords_parse_entity_params($params_string);
- // must use this lower-level function because I missed refactoring
- // the list entity functions for relationships.
- // (which, since you're here, is the only function that runs through all
- // possible options for elgg_get_entities*() functions...)
- $entities = elgg_get_entities_from_relationship($options);
- $content = elgg_view_entity_list($entities, count($entities), $options['offset'],
- $options['limit'], $options['full_view'], $options['list_type_toggle'], $options['pagination']);
- break;
-
- case 'view':
- // src is a required attribute of view
- $vars = ecml_keywords_tokenize_params($params_string);
- $vars['ecml_keyword'] = $keyword;
- $vars['ecml_params_string'] = $params_string;
- $content = elgg_view($vars['src'], $vars);
-
- break;
-
- default:
- // match against custom keywords with optional args
- $keyword_info = $CONFIG->ecml_keywords[$keyword];
- $vars = ecml_keywords_tokenize_params($params_string);
- $vars['ecml_keyword'] = $keyword;
- $vars['ecml_params_string'] = $params_string;
- $content = elgg_view($keyword_info['view'], $vars);
- break;
- }
-
- // if nothing matched return the original string.
- // @todo this might be undesirable. will show ugly code everywhere
- // if you delete a file or something.
- if (!$content) {
- $content = $matches[0];
- }
-
- return $content;
-}
-
-/**
- * Creates an array from a name=value name2='value2' name3="value3" string.
- *
- * @param $string
- * @return array
- */
-function ecml_keywords_tokenize_params($string) {
-
- if (empty($string)) {
- return array();
- }
-
- $params = array();
- $pos = 0;
- $char = substr($string, $pos, 1);
-
- // working var for assembling name and values
- $operand = $name = '';
-
- while ($char !== FALSE) {
- switch ($char) {
- // handle quoted names/values
- case '"':
- case "'":
- $quote = $char;
-
- $next_char = substr($string, ++$pos, 1);
- while ($next_char != $quote) {
- if ($next_char === FALSE) {
- // no matching quote. bail.
- return array();
- }
- $operand .= $next_char;
- $next_char = substr($string, ++$pos, 1);
- }
- break;
-
- case ECML_ATTR_SEPARATOR:
- // normalize true and false
- if ($operand == 'true'){
- $operand = TRUE;
- } elseif ($operand == 'false') {
- $operand = FALSE;
- }
- $params[$name] = $operand;
- $operand = $name = '';
- break;
-
- case ECML_ATTR_OPERATOR:
- // save name, switch to value
- $name = $operand;
- $operand = '';
- break;
-
- default:
- $operand .= $char;
- }
-
- $char = substr($string, ++$pos, 1);
- }
-
- // need to get the last attr
- if ($name && $operand) {
- if ($operand == 'true'){
- $operand = TRUE;
- } elseif ($operand == 'false') {
- $operand = FALSE;
- }
- $params[$name] = $operand;
- }
-
- return $params;
-
- // this is much faster, but doesn't allow quoting.
-// $pairs = array_map('trim', explode(',', $string));
-// $params = array();
-//
-// foreach ($pairs as $pair) {
-// list($name, $value) = explode('=', $pair);
-//
-// $name = trim($name);
-// $value = trim($value);
-//
-// // normalize BOOL values
-// if ($value === 'true') {
-// $value = TRUE;
-// } elseif ($value === 'false') {
-// $value = FALSE;
-// }
-//
-// // don't check against value since a falsy/empty value is valid.
-// if ($name) {
-// $params[$name] = $value;
-// }
-// }
-//
-// return $params;
-}
-
-/**
- * Returns an options array suitable for using in elgg_get_entities()
- *
- * @param string $string "name=value, name2=value2"
- * @return array
- */
-function ecml_keywords_parse_entity_params($string) {
- $params = ecml_keywords_tokenize_params($string);
-
- // handle some special cases
- if (isset($params['owner'])) {
- if ($user = get_user_by_username($params['owner'])) {
- $params['owner_guid'] = $user->getGUID();
- }
- }
-
- // @todo probably need to add more for
- // group -> container_guid, etc
- return $params;
-}
-
-/**
- * Checks granular permissions if keyword is valid for view
- *
- * @param unknown_type $keyword
- * @param unknown_type $view
- * @return bool
- */
-function ecml_is_valid_keyword($keyword, $view = NULL) {
- global $CONFIG;
-
- // this isn't even a real keyword.
- if (!isset($CONFIG->ecml_keywords[$keyword])) {
- return FALSE;
- }
-
- // don't check against views. Already know it's a real one.
- if (!$view) {
- return TRUE;
- }
-
- // this keyword is restricted to certain views
- if (isset($CONFIG->ecml_keywords[$keyword]['restricted'])
- && !in_array($view, $CONFIG->ecml_keywords[$keyword]['restricted'])) {
- return FALSE;
- }
-
- $views = $CONFIG->ecml_permissions;
-
- // this is a blacklist, so return TRUE by default.
- $r = TRUE;
-
- if (isset($views[$view]) && in_array($keyword, $views[$view])) {
- $r = FALSE;
- }
-
- return $r;
-}
-
-/**
- * Grab the ECML keywords as saved in $CONFIG or regenerate.
- */
-function ecml_get_keywords($recache = FALSE) {
- global $CONFIG;
-
- if (isset($CONFIG->ecml_keywords) && !$recache) {
- return $CONFIG->ecml_keywords;
- }
-
- $keywords = elgg_trigger_plugin_hook('get_keywords', 'ecml', NULL, array());
- $CONFIG->ecml_keywords = $keywords;
- return $keywords;
-}
-
-/**
- * Return basic info about the keyword.
- *
- * @param string $keyword
- * @return array
- */
-function ecml_get_keyword_info($keyword) {
- global $CONFIG;
-
- if (isset($CONFIG->ecml_keywords[$keyword])) {
- return $CONFIG->ecml_keywords[$keyword];
- }
-
- return FALSE;
-}
\ No newline at end of file
diff --git a/mod/ecml/graphics/dailymotion.png b/mod/ecml/graphics/dailymotion.png
deleted file mode 100644
index 67950f81c..000000000
Binary files a/mod/ecml/graphics/dailymotion.png and /dev/null differ
diff --git a/mod/ecml/graphics/ecml.png b/mod/ecml/graphics/ecml.png
deleted file mode 100644
index 81de57b56..000000000
Binary files a/mod/ecml/graphics/ecml.png and /dev/null differ
diff --git a/mod/ecml/graphics/googlemaps.png b/mod/ecml/graphics/googlemaps.png
deleted file mode 100644
index 6e4d2f490..000000000
Binary files a/mod/ecml/graphics/googlemaps.png and /dev/null differ
diff --git a/mod/ecml/graphics/logo_bliptv.gif b/mod/ecml/graphics/logo_bliptv.gif
deleted file mode 100644
index 13620b9fd..000000000
Binary files a/mod/ecml/graphics/logo_bliptv.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_dailymotion.gif b/mod/ecml/graphics/logo_dailymotion.gif
deleted file mode 100644
index 48d4cff8d..000000000
Binary files a/mod/ecml/graphics/logo_dailymotion.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_googlemaps.gif b/mod/ecml/graphics/logo_googlemaps.gif
deleted file mode 100644
index 0f8835304..000000000
Binary files a/mod/ecml/graphics/logo_googlemaps.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_livevideo.gif b/mod/ecml/graphics/logo_livevideo.gif
deleted file mode 100644
index 86afeabe4..000000000
Binary files a/mod/ecml/graphics/logo_livevideo.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_redlasso.gif b/mod/ecml/graphics/logo_redlasso.gif
deleted file mode 100644
index 96ac9b78c..000000000
Binary files a/mod/ecml/graphics/logo_redlasso.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_slideshare.gif b/mod/ecml/graphics/logo_slideshare.gif
deleted file mode 100644
index ff082171e..000000000
Binary files a/mod/ecml/graphics/logo_slideshare.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_vimeo.gif b/mod/ecml/graphics/logo_vimeo.gif
deleted file mode 100644
index 4215e74bc..000000000
Binary files a/mod/ecml/graphics/logo_vimeo.gif and /dev/null differ
diff --git a/mod/ecml/graphics/logo_youtube.gif b/mod/ecml/graphics/logo_youtube.gif
deleted file mode 100644
index 7cfdd054c..000000000
Binary files a/mod/ecml/graphics/logo_youtube.gif and /dev/null differ
diff --git a/mod/ecml/graphics/redlasso_1.png b/mod/ecml/graphics/redlasso_1.png
deleted file mode 100644
index caf3ae4f6..000000000
Binary files a/mod/ecml/graphics/redlasso_1.png and /dev/null differ
diff --git a/mod/ecml/graphics/redlasso_2.png b/mod/ecml/graphics/redlasso_2.png
deleted file mode 100644
index 2c7ba64a0..000000000
Binary files a/mod/ecml/graphics/redlasso_2.png and /dev/null differ
diff --git a/mod/ecml/graphics/slideshare.png b/mod/ecml/graphics/slideshare.png
deleted file mode 100644
index 19ecd6b75..000000000
Binary files a/mod/ecml/graphics/slideshare.png and /dev/null differ
diff --git a/mod/ecml/graphics/url_status.png b/mod/ecml/graphics/url_status.png
deleted file mode 100644
index 95c2b5635..000000000
Binary files a/mod/ecml/graphics/url_status.png and /dev/null differ
diff --git a/mod/ecml/graphics/vimeo.png b/mod/ecml/graphics/vimeo.png
deleted file mode 100644
index ae8b4086f..000000000
Binary files a/mod/ecml/graphics/vimeo.png and /dev/null differ
diff --git a/mod/ecml/graphics/youtube.png b/mod/ecml/graphics/youtube.png
deleted file mode 100644
index ed31af05a..000000000
Binary files a/mod/ecml/graphics/youtube.png and /dev/null differ
diff --git a/mod/ecml/languages/en.php b/mod/ecml/languages/en.php
deleted file mode 100644
index f56d2c1cd..000000000
--- a/mod/ecml/languages/en.php
+++ /dev/null
@@ -1,92 +0,0 @@
- 'ECML',
- 'ecml:help' => 'ECML Help',
-
- // views
- 'ecml:views:annotation_generic_comment' => 'Comments',
-
- // keywords
- 'ecml:keywords:googlemaps' => 'Google Maps',
- 'ecml:keywords:googlemaps:desc' => 'Embed a Google Map.',
- 'ecml:keywords:googlemaps:usage' => '[googlemaps src="URL"] Use the link code from Google Maps as the src.',
- 'ecml:googlemaps:view_larger_map' => 'View larger map',
-
- 'ecml:keywords:slideshare' => 'Slide Share',
- 'ecml:keywords:slideshare:desc' => 'Embed a Slideshare slide.',
- 'ecml:keywords:slideshare:usage' => '[slideshare id="slideshare_id"] Use the Wordpress.com embed code.',
-
- 'ecml:keywords:vimeo' => 'Vimeo',
- 'ecml:keywords:vimeo:desc' => 'Embed a Vimeo video.',
- 'ecml:keywords:videmo:usage' => '[videmo src="URL"] Use a standard Vimeo URL as the source.',
-
- 'ecml:keywords:youtube' => 'YouTube',
- 'ecml:keywords:youtube:desc' => 'Embed a YouTube video.',
- 'ecml:keywords:youtube:usage' => '[youtube src="URL"] Use a standard YouTube URL as the source.',
-
- 'ecml:keywords:blip.tv' => 'blip.tv',
- 'ecml:keywords:blip.tv:desc' => 'Embed a blip.tv video.',
- 'ecml:keywords:blip.tv:usage' => '[blip.tv ID] use the Wordpress.com embed code.',
-
- 'ecml:keywords:dailymotion' => 'Daily Motion',
- 'ecml:keywords:dailymotion:desc' => 'Embed a Daily Motion video.',
- 'ecml:keywords:dailymotion:usage' => '[dailymotion src="URL"] Use a standard Daily Motion URL as the source.',
-
- 'ecml:keywords:livevideo' => 'Live Video',
- 'ecml:keywords:livevideo:desc' => 'Embed a Live Video video.',
- 'ecml:keywords:livevideo:usage' => '[livevideo src="URL"] Use a standard livevideo URL as the source.',
-
- 'ecml:keywords:redlasso' => 'Red Lasso',
- 'ecml:keywords:redlasso:desc' => 'Embed a Red Lasso video.',
- 'ecml:keywords:redlasso:usage' => '[redlasso id="URL"] Use the Wordpress.com embed code.',
-
- // keyword help
- 'ecml:keywords_title' => 'Keywords',
- 'ecml:keywords_instructions' =>
- 'Keywords are replaced with content when viewed. They must be surrounded by
- square brackets ([ and ]). You can build your own or use the ones listed below.
- Hover over a keyword to read its description.',
-
- 'ecml:keywords_instructions_more' =>
- '
-
You can build your own keywords for views and entities.
-
-
[entity: type=type, subtype=subtype, owner=username, limit=number]
-
- EX: To show 5 blog posts by admin:
- [entity: type=object, subtype=blog, owner=admin, limit=5]
-
-
You can also specify a valid Elgg view:
- [view: elgg_view, name=value]
-
-
Ex: To show a text input with a default value:
- [view: input/text, value=This is a default value]
',
-
- // admin
- 'ecml:admin' => 'ECML Permissions',
- 'ecml:admin:instruction' =>
-
-'ECML allows users you easily embed views, entities, and 3rd party applications into their content
-on your site by using ECML keywords. There are some ECML keywords that you may want to restrict
-in certain areas of your site. To disable a keyword for a section of your site, check the box in the
-grid below.
-',
-
- 'ecml:admin:permissions_saved' => 'ECML permissions saved.',
- 'ecml:admin:cannot_save_permissions' => 'Cannot save ECML permissions!',
- 'ecml:admin:restricted' => 'Restricted',
-
- // embed support
- 'ecml:embed:web_services' => 'Web Services',
- 'ecml:embed:instructions' => 'Select a service for instructions on how to get embed code or paste the url in directly.',
-
-
-);
-
-add_translation('en', $english);
\ No newline at end of file
diff --git a/mod/ecml/manifest.xml b/mod/ecml/manifest.xml
deleted file mode 100644
index 457c93914..000000000
--- a/mod/ecml/manifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/mod/ecml/start.php b/mod/ecml/start.php
deleted file mode 100644
index 4fa13b7c9..000000000
--- a/mod/ecml/start.php
+++ /dev/null
@@ -1,298 +0,0 @@
- 'Short Description')
- $CONFIG->ecml_parse_views = elgg_trigger_plugin_hook('get_views', 'ecml', NULL, array());
-
- foreach ($CONFIG->ecml_parse_views as $view => $desc) {
- elgg_register_plugin_hook_handler('view', $view, 'ecml_parse_view');
- }
-
- // provide a few built-in ecml keywords.
- // @todo could pull this out into an array here to save an API call.
- elgg_register_plugin_hook_handler('get_keywords', 'ecml', 'ecml_keyword_hook');
-
- // grab the list of keywords and their views from plugins
- $CONFIG->ecml_keywords = elgg_trigger_plugin_hook('get_keywords', 'ecml', NULL, array());
-
- // grab permissions for specific views/contexts
- // this is a black list.
- // it's more efficient to use this as a blacklist
- // but probably makes more sense from a UI perspective as a whitelist.
- // uses [views][view_name] = array(keywords, not, allowed)
- $CONFIG->ecml_permissions = unserialize(get_plugin_setting('ecml_permissions', 'ecml'));
-
- // 3rd party media embed section
- elgg_register_plugin_hook_handler('embed_get_sections', 'all', 'ecml_embed_web_services_hook');
-
- // remove ecml when stripping tags
- elgg_register_plugin_hook_handler('format', 'strip_tags', 'ecml_strip_tags');
-}
-
-/**
- * Display a help page for valid ECML keywords on this page.
- *
- * @param array $page
- */
-function ecml_help_page_handler($page) {
- if (!isset($page[0]) || empty($page[0])) {
- $content = elgg_view('ecml/help');
- $body = elgg_view_layout('one_column_with_sidebar', array('content' => $content));
- echo elgg_view_page(elgg_echo('ecml:help'), $body);
- } else {
- // asking for detailed help about a keyword
- $keyword = $page[0];
- $content = elgg_view('ecml/keyword_help', array('keyword' => $keyword));
-
- if (get_input('ajax', FALSE)) {
- echo $content;
- exit;
- } else {
- $body = elgg_view_layout('one_column_with_sidebar', array('content' => $content));
- echo elgg_view_page(elgg_echo('ecml:help'), $body);
- }
- }
-
- return TRUE;
-}
-
-/**
- * Generate ECML given a URL or embed link and service.
- * Doesn't check if the resource actually exists.
- * Outputs JSON.
- *
- * @param unknown_type $page
- */
-function ecml_generate_page_handler($page) {
- $service = trim(get_input('service'));
- $resource = trim(get_input('resource'));
-
- // if standard ECML is passed, guess the service from that instead
- // only support one.
- if (elgg_substr($resource, 0, 1) == '[') {
- if ($keywords = ecml_extract_keywords($resource)) {
- $keyword = $keywords[0]['keyword'];
- $ecml_info = ecml_get_keyword_info($keyword);
- $html = ecml_parse_string($resource);
-
- echo json_encode(array(
- 'status' => 'success',
- 'ecml' => $resource,
- 'html' => $html
- ));
-
- exit;
- }
- }
-
- if (!$service || !$resource) {
- echo json_encode(array(
- 'status' => 'error',
- 'message' => elgg_echo('ecml:embed:invalid_web_service_keyword')
- ));
-
- exit;
- }
-
- $ecml_info = ecml_get_keyword_info($service);
-
- if ($ecml_info) {
- // don't allow embedding for restricted.
- if (isset($ecml_info['restricted'])) {
- $result = array(
- 'status' => 'error',
- 'message' => elgg_echo('ecml:embed:cannot_embed'),
- );
- } else {
- // @todo pull this out into a function. allow optional arguments.
- $ecml = "[$service " . sprintf($ecml_info['embed_format'], $resource) . ']';
- $html = ecml_parse_string($ecml, NULL);
- $result = array(
- 'status' => 'success',
- 'ecml' => $ecml,
- 'html' => $html
- );
- }
- } else {
- $result = array(
- 'status' => 'error',
- 'message' => elgg_echo('ecml:embed:invalid_web_service_keyword')
- );
- }
-
- echo json_encode($result);
- exit;
-}
-
-/**
- * Display a admin area for ECML
- *
- * @param array $page
- */
-function ecml_admin_page_handler($page) {
- admin_gatekeeper();
- elgg_set_context('admin');
- $content = elgg_view('ecml/admin/ecml_admin');
- $body = elgg_view_layout('one_column_with_sidebar', array('content' => $content));
- echo elgg_view_page(elgg_echo('ecml:admin'), $body);
-}
-
-/**
- * Parses a registered view / context for supported keywords.
- *
- * @param unknown_type $hook
- * @param unknown_type $entity_type
- * @param unknown_type $return_value
- * @param unknown_type $params
- * @return string
- */
-function ecml_parse_view($hook, $entity_type, $return_value, $params) {
- global $CONFIG;
-
- return ecml_parse_string($return_value, $params['view']);
-}
-
-
-/**
- * Register default keywords.
- *
- * @param unknown_type $hook
- * @param unknown_type $type
- * @param unknown_type $value
- * @param unknown_type $params
- * @return unknown_type
- */
-function ecml_keyword_hook($hook, $type, $value, $params) {
- // I keep going back and forth about entity and view. They're powerful, but
- // a great way to let a site get hacked if the admin doesn't lock them down.
- $keywords = array(
- 'youtube' => array('params' => array('src', 'width', 'height'), 'embed_format' => 'src="%s"'),
- 'slideshare' => array('params' => array('id', 'width', 'height'), 'embed_format' => 'id="%s"'),
- 'vimeo' => array('params' => array('src', 'width', 'height'), 'embed_format' => 'src="%s"'),
- 'googlemaps' => array('params' => array('src', 'width', 'height'), 'embed_format' => 'src="%s"'),
- //'scribd'
- 'blip.tv' => array('params' => array('width', 'height'), 'embed_format' => '%s'),
- 'dailymotion' => array('params' => array('src', 'width', 'height'), 'embed_format' => 'src="%s"'),
- 'livevideo' => array('params' => array('src', 'width', 'height'), 'embed_format' => 'src="%s"'),
- 'redlasso' => array('params' => array('id', 'width', 'height'), 'embed_format' => 'id="%s"'),
- );
-
- foreach ($keywords as $keyword => $info) {
- $value[$keyword] = array(
- 'name' => elgg_echo("ecml:keywords:$keyword"),
- 'view' => "ecml/keywords/$keyword",
- 'description' => elgg_echo("ecml:keywords:$keyword:desc"),
- 'usage' => elgg_echo("ecml:keywords:$keyword:usage"),
- 'type' => 'web_service',
- 'params' => $info['params'],
- 'embed_format' => $info['embed_format']
- );
- }
-
- // default entity keyword
- $value['entity'] = array(
- 'name' => elgg_echo('ecml:keywords:entity'),
- 'view' => "ecml/keywords/entity",
- 'description' => elgg_echo("ecml:keywords:entity:desc"),
- 'usage' => elgg_echo("ecml:keywords:entity:usage")
- );
-
- return $value;
-}
-
-/**
- * Register default views to parse
- *
- * @param unknown_type $hook
- * @param unknown_type $type
- * @param unknown_type $value
- * @param unknown_type $params
- */
-function ecml_views_hook($hook, $type, $value, $params) {
- $value['annotation/generic_comment'] = elgg_echo('ecml:views:annotation_generic_comment');
-
- return $value;
-}
-
-/**
- * Show the special Web Services embed section.
- *
- * @param unknown_type $hook
- * @param unknown_type $type
- * @param unknown_type $value
- * @param unknown_type $params
- */
-function ecml_embed_web_services_hook($hook, $type, $value, $params) {
- // we're using a view override for this section's content
- // so only need to pass the name.
- $value['web_services'] = array(
- 'name' => elgg_echo('ecml:embed:web_services')
- );
-
- return $value;
-}
-
-/**
- * Remove ecml code for elgg_strip_tags()
- *
- * @param unknown_type $hook
- * @param unknown_type $type
- * @param unknown_type $value
- * @param unknown_type $params
- */
-function ecml_strip_tags($hook, $type, $value, $params) {
- return preg_replace(ECML_KEYWORD_REGEX, '', $value);
-}
-
-// be sure to run after other plugins
-elgg_register_event_handler('init', 'system', 'ecml_init', 9999);
\ No newline at end of file
diff --git a/mod/ecml/views/default/ecml/admin/css.php b/mod/ecml/views/default/ecml/admin/css.php
deleted file mode 100644
index 0b018733a..000000000
--- a/mod/ecml/views/default/ecml/admin/css.php
+++ /dev/null
@@ -1,156 +0,0 @@
-
-
-.ecml_admin_table {
- width:100%;
-}
-.ecml_admin_table td, th {
- border: 1px solid gray;
- text-align: center;
- padding: 5px;
-}
-.ecml_admin_table th, .ecml_keyword_desc {
- font-weight: bold;
-}
-.ecml_row_odd {
- background-color: #EEE;
-}
-.ecml_row_even {
-
-}
-.ecml_restricted {
- color: #555;
-}
-
-
-/* ecml embed web services list */
-.ecml_web_service_list {
- margin:0;
- padding:0;
-}
-.ecml_web_service_list li {
- list-style: none;
- margin:0 0 0 0;
- padding:0;
- /* display:inline; */
-
-}
-.ecml_web_service_list li a {
- display:block;
- float:left;
- height:41px;
- width:152px;
- background-position: center center;
- background-repeat: no-repeat;
- text-indent: -900em;
- border:2px solid transparent;
- margin:0 20px 10px 0;
-}
-.ecml_web_service_list li a.selected {
- border-color:#999999;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-.ecml_web_service_list li a.youtube {
- background-image: url(mod/ecml/graphics/logo_youtube.gif);
- width:102px;
-}
-.ecml_web_service_list li a.slideshare {
- background-image: url(mod/ecml/graphics/logo_slideshare.gif);
-}
-.ecml_web_service_list li a.vimeo {
- background-image: url(mod/ecml/graphics/logo_vimeo.gif);
- width:130px;
-}
-.ecml_web_service_list li a.googlemaps {
- background-image: url(mod/ecml/graphics/logo_googlemaps.gif);
-}
-.ecml_web_service_list li a.blip_tv {
- background-image: url(mod/ecml/graphics/logo_bliptv.gif);
- width:102px;
-}
-.ecml_web_service_list li a.dailymotion {
- background-image: url(mod/ecml/graphics/logo_dailymotion.gif);
-}
-.ecml_web_service_list li a.livevideo {
- background-image: url(mod/ecml/graphics/logo_livevideo.gif);
- width:166px;
-}
-.ecml_web_service_list li a.redlasso {
- background-image: url(mod/ecml/graphics/logo_redlasso.gif);
- background-position:center 4px;
- width:130px;
-}
-
-.embed_content_section {
- border:none;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- background-color:#EEEEEE;
- margin:10px 0 10px 0;
- padding:5px;
- width:auto;
-}
-.ecml_generated_code {
- color:#666666;
- font-size:85%;
- font-style:normal;
- line-height: 1.3em;
- margin:5px 0;
-}
-.ecml_embed_instructions,
-.ecml_embed_preview {
- background-image: url(_graphics/elgg_sprites.png);
- background-repeat: no-repeat;
- background-position: 0px -367px;
- padding-left: 12px;
-}
-.ecml_embed_instructions.open,
-.ecml_embed_preview.open {
- background-position: 0px -388px;
-}
-#embed_service_url {
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- background-color:#EEEEEE;
- margin:10px 0 10px 0;
- padding:5px;
- width:auto;
-}
-#web_services_resource {
- width:670px;
-}
-#url_status {
- width:30px;
- height:30px;
- float:right;
-}
-#url_status.success {
- background-image: url(mod/ecml/graphics/url_status.png);
- background-repeat: no-repeat;
- background-position: left top;
-}
-#url_status.failure {
- background-image: url(mod/ecml/graphics/url_status.png);
- background-repeat: no-repeat;
- background-position: left bottom;
-}
-#embed_ecml_keyword_help,
-#ecml_preview {
- padding:10px;
-}
-#ecml_preview object,
-#ecml_preview embed,
-#ecml_preview iframe {
- width: auto;
- max-height:240px;
-}
-#embed_submit {
- margin:10px 0 0 0;
-}
-
-
-
diff --git a/mod/ecml/views/default/ecml/help.php b/mod/ecml/views/default/ecml/help.php
deleted file mode 100644
index 4fca93a2a..000000000
--- a/mod/ecml/views/default/ecml/help.php
+++ /dev/null
@@ -1,28 +0,0 @@
-ecml_keywords;
-$title = elgg_echo('ecml:keywords_title');
-$instructions = elgg_echo('ecml:keywords_instructions');
-$more_info = elgg_echo('ecml:keywords_instructions_more');
-
-$keywords_html = '';
-foreach ($keywords as $keyword => $info) {
- $desc = htmlentities($info['description']);
- $keywords_html .= "
-
[$keyword]
-
$desc
";
-}
-
-echo "
-
$title
-
$instructions
-$more_info
-
- $keywords_html
-
-";
\ No newline at end of file
diff --git a/mod/ecml/views/default/ecml/help/blip.tv.php b/mod/ecml/views/default/ecml/help/blip.tv.php
deleted file mode 100644
index bac4c99c3..000000000
--- a/mod/ecml/views/default/ecml/help/blip.tv.php
+++ /dev/null
@@ -1,12 +0,0 @@
-' . elgg_echo('ecml:keywords:blip.tv') . '';
-echo '
' . elgg_echo('ecml:keywords:blip.tv:desc') . '
';
-echo '
' . elgg_echo('ecml:keywords:blip.tv:usage') . '
';
-
-?>
-
-
\ No newline at end of file
diff --git a/mod/ecml/views/default/ecml/help/dailymotion.php b/mod/ecml/views/default/ecml/help/dailymotion.php
deleted file mode 100644
index 80efa91e7..000000000
--- a/mod/ecml/views/default/ecml/help/dailymotion.php
+++ /dev/null
@@ -1,12 +0,0 @@
-' . elgg_echo('ecml:keywords:dailymotion') . '';
-echo '
- ";
- }
- foreach ($views as $view => $view_info) {
- // if this is restricted and we're not on the specified view don't allow changes
- // since we don't save this, no need to pass a name
- if (isset($keyword_info['restricted'])) {
- $checked = (in_array($view, $keyword_info['restricted'])) ? 'checked="checked"' : '';
- $form_body .= "