diff options
Diffstat (limited to 'mod/ecml')
47 files changed, 0 insertions, 1918 deletions
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 @@ -<?php -/** - * Saves granular access - * - * @package ECML - */ - -$whitelist = get_input('whitelist', array()); -$keywords = $CONFIG->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 @@ -<?php -/** - * Helper functions for ECML. - * - * @package ECML - */ - -/** - * Parses a string for ECML. - * - * @param string $string - * @return string $string with ECML replaced by HTML. - */ -function ecml_parse_string($string, $view = NULL) { - global $CONFIG; - - $CONFIG->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 Binary files differdeleted file mode 100644 index 67950f81c..000000000 --- a/mod/ecml/graphics/dailymotion.png +++ /dev/null diff --git a/mod/ecml/graphics/ecml.png b/mod/ecml/graphics/ecml.png Binary files differdeleted file mode 100644 index 81de57b56..000000000 --- a/mod/ecml/graphics/ecml.png +++ /dev/null diff --git a/mod/ecml/graphics/googlemaps.png b/mod/ecml/graphics/googlemaps.png Binary files differdeleted file mode 100644 index 6e4d2f490..000000000 --- a/mod/ecml/graphics/googlemaps.png +++ /dev/null diff --git a/mod/ecml/graphics/logo_bliptv.gif b/mod/ecml/graphics/logo_bliptv.gif Binary files differdeleted file mode 100644 index 13620b9fd..000000000 --- a/mod/ecml/graphics/logo_bliptv.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_dailymotion.gif b/mod/ecml/graphics/logo_dailymotion.gif Binary files differdeleted file mode 100644 index 48d4cff8d..000000000 --- a/mod/ecml/graphics/logo_dailymotion.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_googlemaps.gif b/mod/ecml/graphics/logo_googlemaps.gif Binary files differdeleted file mode 100644 index 0f8835304..000000000 --- a/mod/ecml/graphics/logo_googlemaps.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_livevideo.gif b/mod/ecml/graphics/logo_livevideo.gif Binary files differdeleted file mode 100644 index 86afeabe4..000000000 --- a/mod/ecml/graphics/logo_livevideo.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_redlasso.gif b/mod/ecml/graphics/logo_redlasso.gif Binary files differdeleted file mode 100644 index 96ac9b78c..000000000 --- a/mod/ecml/graphics/logo_redlasso.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_slideshare.gif b/mod/ecml/graphics/logo_slideshare.gif Binary files differdeleted file mode 100644 index ff082171e..000000000 --- a/mod/ecml/graphics/logo_slideshare.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_vimeo.gif b/mod/ecml/graphics/logo_vimeo.gif Binary files differdeleted file mode 100644 index 4215e74bc..000000000 --- a/mod/ecml/graphics/logo_vimeo.gif +++ /dev/null diff --git a/mod/ecml/graphics/logo_youtube.gif b/mod/ecml/graphics/logo_youtube.gif Binary files differdeleted file mode 100644 index 7cfdd054c..000000000 --- a/mod/ecml/graphics/logo_youtube.gif +++ /dev/null diff --git a/mod/ecml/graphics/redlasso_1.png b/mod/ecml/graphics/redlasso_1.png Binary files differdeleted file mode 100644 index caf3ae4f6..000000000 --- a/mod/ecml/graphics/redlasso_1.png +++ /dev/null diff --git a/mod/ecml/graphics/redlasso_2.png b/mod/ecml/graphics/redlasso_2.png Binary files differdeleted file mode 100644 index 2c7ba64a0..000000000 --- a/mod/ecml/graphics/redlasso_2.png +++ /dev/null diff --git a/mod/ecml/graphics/slideshare.png b/mod/ecml/graphics/slideshare.png Binary files differdeleted file mode 100644 index 19ecd6b75..000000000 --- a/mod/ecml/graphics/slideshare.png +++ /dev/null diff --git a/mod/ecml/graphics/url_status.png b/mod/ecml/graphics/url_status.png Binary files differdeleted file mode 100644 index 95c2b5635..000000000 --- a/mod/ecml/graphics/url_status.png +++ /dev/null diff --git a/mod/ecml/graphics/vimeo.png b/mod/ecml/graphics/vimeo.png Binary files differdeleted file mode 100644 index ae8b4086f..000000000 --- a/mod/ecml/graphics/vimeo.png +++ /dev/null diff --git a/mod/ecml/graphics/youtube.png b/mod/ecml/graphics/youtube.png Binary files differdeleted file mode 100644 index ed31af05a..000000000 --- a/mod/ecml/graphics/youtube.png +++ /dev/null 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 @@ -<?php -/** - * Language definitions for ECML - * - * @package ecml - */ - -$english = array( - 'ecml' => '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' => - ' - <p>You can build your own keywords for views and entities.</p> - - <p>[entity: type=type, subtype=subtype, owner=username, limit=number]<br /> - - EX: To show 5 blog posts by admin:<br /> - [entity: type=object, subtype=blog, owner=admin, limit=5]</p> - - <p>You can also specify a valid Elgg view:<br /> - [view: elgg_view, name=value]</p> - - <p>Ex: To show a text input with a default value:<br /> - [view: input/text, value=This is a default value]</p>', - - // 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 @@ -<?xml version="1.0" encoding="UTF-8"?> -<plugin_manifest> - <field key="name" value="ECML V2" /> - <field key="author" value="Curverider" /> - <field key="version" value="1.0" /> - <field key="description" value="Elgg Customizable Markup Language v2 adds support for easy customization of pages and embedding media." /> - <field key="website" value="http://www.elgg.org/" /> - <field key="copyright" value="(C) Curverider 2008-2010" /> - <field key="licence" value="GNU Public License version 2" /> - <field key="elgg_version" value="2009030702" /> - <field key="elgg_install_state" value="enabled" /> - <field key="admin_interface" value="advanced" /> -</plugin_manifest> 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 @@ -<?php -/** - * Provides the ECML service to plugins. - * - * @package ECML - * - * @todo - * Granular access to keywords based upon view. - * Update docs / help - * Check for SQL injection problems. - * Check entity keyword views against fullview. Force to FALSE? - */ - -/** - * Init ECML - */ -function ecml_init() { - require_once(dirname(__FILE__) . '/ecml_functions.php'); - global $CONFIG; - - define('ECML_ATTR_SEPARATOR', ' '); - define('ECML_ATTR_OPERATOR', '='); - - // find alphanumerics (keywords) possibly followed by everything that is not a ] (args) and all surrounded by [ ]s - define('ECML_KEYWORD_REGEX', '/\[([a-z0-9\.]+)([^\]]+)?\]/'); - - // help page - register_page_handler('ecml', 'ecml_help_page_handler'); - - // admin access page - register_page_handler('ecml_admin', 'ecml_admin_page_handler'); - - // ecml validator for embed - register_page_handler('ecml_generate', 'ecml_generate_page_handler'); - - // CSS for admin access - elgg_extend_view('css/screen', 'ecml/admin/css'); - - // admin action to save permissions - elgg_register_action('settings/ecml/save', dirname(__FILE__) . '/actions/save_permissions.php', 'admin'); - - // show ECML-enabled icon on free-text input areas - //elgg_extend_view('input/longtext', 'ecml/input_ext', 0); - //elgg_extend_view('input/plaintext', 'ecml/input_ext'); - //elgg_extend_view('input/text', 'ecml/input_ext'); - - // add parsing for core views. - elgg_register_plugin_hook_handler('get_views', 'ecml', 'ecml_views_hook'); - - // get register the views we want to parse for ecml - // @todo will need to do profiling to see if it would be faster - // to foreach through this list and register to specific views or - // do the check in a single plugin hook. - // Wants array('view_name' => '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 @@ -<?php -/** -* ECML CSS -*/ -?> - -.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(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_youtube.gif); - width:102px; -} -.ecml_web_service_list li a.slideshare { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_slideshare.gif); -} -.ecml_web_service_list li a.vimeo { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_vimeo.gif); - width:130px; -} -.ecml_web_service_list li a.googlemaps { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_googlemaps.gif); -} -.ecml_web_service_list li a.blip_tv { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_bliptv.gif); - width:102px; -} -.ecml_web_service_list li a.dailymotion { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_dailymotion.gif); -} -.ecml_web_service_list li a.livevideo { - background-image: url(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/logo_livevideo.gif); - width:166px; -} -.ecml_web_service_list li a.redlasso { - background-image: url(<?php echo elgg_get_site_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(<?php echo elgg_get_site_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(<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/url_status.png); - background-repeat: no-repeat; - background-position: left top; -} -#url_status.failure { - background-image: url(<?php echo elgg_get_site_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 @@ -<?php -/** - * Lists available keywords - * - * @package ECML - */ - -$keywords = $vars['config']->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 .= " -<dt>[$keyword]</dt> -<dd>$desc</dd>"; -} - -echo " -<h3>$title</h3> -<p>$instructions</p> -$more_info -<dl> - $keywords_html -</dl> -";
\ 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 @@ -<?php -/** - * ECML help for blip.tv - */ - -echo '<h3>' . elgg_echo('ecml:keywords:blip.tv') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:blip.tv:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:blip.tv:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/blip.tv.png" />
\ 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 @@ -<?php -/** - * ECML help for dailymotion - */ - -echo '<h3>' . elgg_echo('ecml:keywords:dailymotion') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:dailymotion:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:dailymotion:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/dailymotion.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/help/googlemaps.php b/mod/ecml/views/default/ecml/help/googlemaps.php deleted file mode 100644 index d55c351fb..000000000 --- a/mod/ecml/views/default/ecml/help/googlemaps.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * ECML help for googlemaps - */ - -echo '<h3>' . elgg_echo('ecml:keywords:googlemaps') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:googlemaps:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:googlemaps:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/googlemaps.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/help/livevideo.php b/mod/ecml/views/default/ecml/help/livevideo.php deleted file mode 100644 index 1343a34da..000000000 --- a/mod/ecml/views/default/ecml/help/livevideo.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * ECML help for livevideo - */ - -echo '<h3>' . elgg_echo('ecml:keywords:livevideo') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:livevideo:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:livevideo:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/livevideo.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/help/redlasso.php b/mod/ecml/views/default/ecml/help/redlasso.php deleted file mode 100644 index 07b497913..000000000 --- a/mod/ecml/views/default/ecml/help/redlasso.php +++ /dev/null @@ -1,13 +0,0 @@ -<?php -/** - * ECML help for redlasso - */ - -echo '<h3>' . elgg_echo('ecml:keywords:redlasso') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:redlasso:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:redlasso:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/redlasso_1.png" /> -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/redlasso_2.png" /> diff --git a/mod/ecml/views/default/ecml/help/slideshare.php b/mod/ecml/views/default/ecml/help/slideshare.php deleted file mode 100644 index 45ada4b54..000000000 --- a/mod/ecml/views/default/ecml/help/slideshare.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * ECML help for youtube - */ - -echo '<h3>' . elgg_echo('ecml:keywords:slideshare') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:slideshare:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:slideshare:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/slideshare.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/help/vimeo.php b/mod/ecml/views/default/ecml/help/vimeo.php deleted file mode 100644 index e5f6ae28a..000000000 --- a/mod/ecml/views/default/ecml/help/vimeo.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * ECML help for vimeo - */ - -echo '<h3>' . elgg_echo('ecml:keywords:vimeo') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:vimeo:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:vimeo:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/vimeo.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/help/youtube.php b/mod/ecml/views/default/ecml/help/youtube.php deleted file mode 100644 index 53be4a3c0..000000000 --- a/mod/ecml/views/default/ecml/help/youtube.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/** - * ECML help for youtube - */ - -echo '<h3>' . elgg_echo('ecml:keywords:youtube') . '</h3>'; -echo '<p>' . elgg_echo('ecml:keywords:youtube:desc') . '</p>'; -echo '<p>' . elgg_echo('ecml:keywords:youtube:usage') . '</p>'; - -?> - -<img src="<?php echo elgg_get_site_url()?>mod/ecml/graphics/youtube.png" />
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/input_ext.php b/mod/ecml/views/default/ecml/input_ext.php deleted file mode 100644 index d5da6dd13..000000000 --- a/mod/ecml/views/default/ecml/input_ext.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php -/** - * Displays an ECML icon on ECML-enabled forms - * - * @package ECML - */ - -$docs_href = elgg_get_site_url()."pg/ecml"; -?> -<a href="<?php echo $docs_href; ?>" class="elgg-longtext-control" title="<?php echo elgg_echo('ecml:help'); ?>" target="_new"><img src="<?php echo elgg_get_site_url(); ?>mod/ecml/graphics/ecml.png" width="50" height="15" alt="ECML" /></a>
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keyword_help.php b/mod/ecml/views/default/ecml/keyword_help.php deleted file mode 100644 index 6f9021fdd..000000000 --- a/mod/ecml/views/default/ecml/keyword_help.php +++ /dev/null @@ -1,18 +0,0 @@ -<?php -/** - * Specific keyword help. - * - * Looks for a view ecml/help/keyword - * - */ - -$keyword = elgg_get_array_value('keyword', $vars); -$content = elgg_view("ecml/help/$keyword"); - -if (!$keyword || !ecml_is_valid_keyword($keyword)) { - echo elgg_echo('ecml:help:invalid_keyword'); -} elseif (!$content) { - echo elgg_echo('ecml:help:no_help'); -} else { - echo $content; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/blip.tv.php b/mod/ecml/views/default/ecml/keywords/blip.tv.php deleted file mode 100644 index 453026533..000000000 --- a/mod/ecml/views/default/ecml/keywords/blip.tv.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php -/** - * ECML Blip.tv support - * - * @package ECML - */ - -$params = str_replace('?', '', $vars['ecml_params_string']); -$width = (isset($vars['width'])) ? $vars['width'] : 425; -$height = (isset($vars['height'])) ? $vars['height'] : 350; - -if ($params) { - $embed_src = elgg_http_add_url_query_elements($src, array('output' => 'embed')); - $link_href = elgg_http_add_url_query_elements($src, array('source' => 'embed')); - - echo " -<p><script type='text/javascript' src='http://blip.tv/syndication/write_player?skin=js&cross_post_destination=-1&view=full_js&$params'></script></p> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/dailymotion.php b/mod/ecml/views/default/ecml/keywords/dailymotion.php deleted file mode 100644 index 4060d6117..000000000 --- a/mod/ecml/views/default/ecml/keywords/dailymotion.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** - * ECML Daily Motion support - * - * @package ECML - */ - -$base_url = 'http://www.dailymotion.com/video/'; -$src = (isset($vars['src'])) ? str_replace($base_url, '', $vars['src']) : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 480; -$height = (isset($vars['height'])) ? $vars['height'] : 270; - -if ($src) { - list($vid, $name) = explode('_', $src); - $url = "http://www.dailymotion.com/swf/video/$vid"; - - echo " - <p> - <object width=\"$width\" height=\"$height\"> - <param name=\"movie\" value=\"$url\"></param> - <param name=\"allowFullScreen\" value=\"true\"></param> - <param name=\"allowScriptAccess\" value=\"always\"></param> - <embed type=\"application/x-shockwave-flash\" src=\"$url\" width=\"$width\" height=\"$height\" allowfullscreen=\"true\" allowscriptaccess=\"always\"></embed> - </object> - </p> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/entity.php b/mod/ecml/views/default/ecml/keywords/entity.php deleted file mode 100644 index 73491f6a3..000000000 --- a/mod/ecml/views/default/ecml/keywords/entity.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php -/** - * ECML Generic Object GUID - * - * @package ECML - */ - -$guid = $vars['guid']; - -if ($entity = get_entity($guid)) { - echo elgg_view('output/url', array( - 'href' => $entity->getURL(), - 'title' => $entity->title, - 'text' => $entity->title, - 'class' => "embeded_file link", - // abusing the js attribute - 'js' => "style=\"background-image:url({$entity->getIcon('tiny')})\"" - - )); -} else { - echo elgg_echo('ecml:entity:invalid'); -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/googlemaps.php b/mod/ecml/views/default/ecml/keywords/googlemaps.php deleted file mode 100644 index 2e13f9f43..000000000 --- a/mod/ecml/views/default/ecml/keywords/googlemaps.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * ECML Google Maps support - * - * @package ECML - */ - -$src = (isset($vars['src'])) ? $vars['src'] : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 425; -$height = (isset($vars['height'])) ? $vars['height'] : 350; - -if ($src) { - $src = html_entity_decode($src); - - $embed_src = elgg_http_add_url_query_elements($src, array('output' => 'embed')); - $link_href = elgg_http_add_url_query_elements($src, array('source' => 'embed')); - - echo " -<iframe width=\"$width\" height=\"$height\" frameborder=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" src=\"$embed_src\"></iframe> -<br /> -<small><a href=\"$link_href\" style=\"color:#0000FF;text-align:left\">" . elgg_echo('ecml:googlemaps:view_larger_map') . "</a></small> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/livevideo.php b/mod/ecml/views/default/ecml/keywords/livevideo.php deleted file mode 100644 index b445f4575..000000000 --- a/mod/ecml/views/default/ecml/keywords/livevideo.php +++ /dev/null @@ -1,25 +0,0 @@ -<?php -/** - * ECML Live Video support - * - * @package ECML - */ - -$base_url = 'http://www.livevideo.com/video/'; -$src = (isset($vars['src'])) ? str_replace($base_url, '', $vars['src']) : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 445; -$height = (isset($vars['height'])) ? $vars['height'] : 369; - -if ($src) { - $parts = explode('/', $src); - $vid = $parts[0]; - - // it automatically autostarts, but not passing it causes control issues - $url = "http://www.livevideo.com/flvplayer/embed/$vid&autoStart=1"; - - echo " - <p> - <embed src=\"$url\" type=\"application/x-shockwave-flash\" quality=\"high\" WIDTH=\"$width\" HEIGHT=\"$height\" wmode=\"transparent\"></embed> - </p> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/redlasso.php b/mod/ecml/views/default/ecml/keywords/redlasso.php deleted file mode 100644 index 462865bec..000000000 --- a/mod/ecml/views/default/ecml/keywords/redlasso.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/** - * ECML Red Lasso support - * - * @package ECML - */ - -$vid = (isset($vars['id'])) ? $vars['id'] : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 390; -$height = (isset($vars['height'])) ? $vars['height'] : 320; - -if ($vid) { - echo " -<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\"$width\" height=\"$height\" id=\"Redlasso\"> - <param name=\"movie\" value=\"http://player.redlasso.com/redlasso_player_b1b_deploy.swf\" /> - <param name=\"flashvars\" value=\"embedId=$vid&pid=\" /> - <param name=\"allowScriptAccess\" value=\"always\" /> - <param name=\"allowFullScreen\" value=\"true\" /> - <embed src=\"http://player.redlasso.com/redlasso_player_b1b_deploy.swf\" flashvars=\"embedId=$vid&pid=\" width=\"$width\" height=\"$height\" type=\"application/x-shockwave-flash\" allowScriptAccess=\"always\" allowFullScreen=\"true\" name=\"Redlasso\"> - </embed> -</object> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/slideshare.php b/mod/ecml/views/default/ecml/keywords/slideshare.php deleted file mode 100644 index 34db6aed5..000000000 --- a/mod/ecml/views/default/ecml/keywords/slideshare.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/** - * ECML Slideshare support - * - * @package ECML - */ - -// this wants the "wordpress.com" embed code. -// to make life easier on users, don't require them to add the "s -// and just chop out the id= bit here from the full attr list - -$id = str_replace('id=', '', $vars['ecml_params_string']); -$width = (isset($vars['width'])) ? $vars['width'] : 450; -$height = (isset($vars['height'])) ? $vars['height'] : 369; - -if ($id) { - // @todo need to check if the & should be encoded. - - $slide_url = "http://static.slideshare.net/swf/ssplayer2.swf?id=$id"; - - echo " -<object type=\"application/x-shockwave-flash\" wmode=\"opaque\" data=\"$slide_url\" width=\"$width\" height=\"$height\"> - <param name=\"movie\" value=\"$slide_url\" /> - <param name=\"allowFullScreen\" value=\"true\" /> - <param name=\"allowScriptAccess\" value=\"always\" /> - - <embed src=\"$slide_url\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"$width\" height=\"$height\"></embed> -</object> -"; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/user_list.php b/mod/ecml/views/default/ecml/keywords/user_list.php deleted file mode 100644 index b1c398e2e..000000000 --- a/mod/ecml/views/default/ecml/keywords/user_list.php +++ /dev/null @@ -1,43 +0,0 @@ -<?php -/** - * Lists users - * - * @package SitePages - */ - -$only_with_avatars = (isset($vars['only_with_avatars'])) ? $vars['only_with_avatars'] : TRUE; -$list_type = (isset($vars['list_type'])) ? $vars['list_type'] : 'newest'; -$limit = (isset($vars['limit'])) ? $vars['limit'] : 10; - -$options = array( - 'type' => 'user', - 'limit' => $limit -); - -if ($only_with_avatars == TRUE) { - $options['metadata_name_value_pairs'] = array('name' => 'icontime', 'operand' => '!=', 'value' => 0); -} - -switch ($list_type) { - case 'newest': - $options['order_by'] = 'e.time_created DESC'; - break; - - case 'online': - // show people with a last action of < 10 minutes. - $last_action = time() - 10 * 60; - $options['joins'] = array("JOIN {$vars['config']->dbprefix}users_entity ue on ue.guid = e.guid"); - $options['wheres'] = array("ue.last_action > $last_action"); - break; - - case 'random': - $options['order_by'] = 'RAND()'; - break; - - default: - break; -} - -$users = elgg_get_entities_from_metadata($options); - -echo elgg_view_entity_list($users, count($users), 0, $limit, FALSE, FALSE, FALSE);
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/vimeo.php b/mod/ecml/views/default/ecml/keywords/vimeo.php deleted file mode 100644 index 263eb3740..000000000 --- a/mod/ecml/views/default/ecml/keywords/vimeo.php +++ /dev/null @@ -1,50 +0,0 @@ -<?php -/** - * ECML vimeo support - * - * @package ECML - */ - -$src = (isset($vars['src'])) ? $vars['src'] : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 480; -$height = (isset($vars['height'])) ? $vars['height'] : 385; - -// need to extract the video id. -// the src arg can take a full url or an id. -// assume if no youtube.com that it's an id. -if (strpos($src, 'vimeo.com') === FALSE) { - $vid = $src; -} else { - // we love vimeo. - list($address, $vid) = explode('vimeo.com/', $src); -} - -if ($vid) { - $movie_url = "http://vimeo.com/moogaloop.swf?"; - $query = array('clip_id' => $vid, 'server' => 'vimeo.com'); - - $params = array( - 'show_title' => 1, - 'show_byline' => 1, - 'show_portrait' => 0, - 'color' => '', - 'fullscreen' => 1 - ); - - foreach ($params as $param => $default) { - $query[$param] = (isset($vars[$param])) ? $vars[$param] : $default; - } - - $query_str = http_build_query($query); - $movie_url .= $query_str; - - echo " -<object width=\"$width\" height=\"$height\"> - <param name=\"allowfullscreen\" value=\"true\" /> - <param name=\"allowscriptaccess\" value=\"always\" /> - <param name=\"movie\" value=\"$movie_url\" /> - <embed src=\"$movie_url\" type=\"application/x-shockwave-flash\" allowfullscreen=\"true\" allowscriptaccess=\"always\" width=\"$width\" height=\"$height\"> - </embed> -</object> - "; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/ecml/keywords/youtube.php b/mod/ecml/views/default/ecml/keywords/youtube.php deleted file mode 100644 index c212f6841..000000000 --- a/mod/ecml/views/default/ecml/keywords/youtube.php +++ /dev/null @@ -1,39 +0,0 @@ -<?php -/** - * ECML Youtube support - * - * @package ECML - */ - -$src = (isset($vars['src'])) ? $vars['src'] : FALSE; -$width = (isset($vars['width'])) ? $vars['width'] : 480; -$height = (isset($vars['height'])) ? $vars['height'] : 385; - -// need to extract the video id. -// the src arg can take a full url or an id. -// assume if no youtube.com that it's an id. -if (strpos($src, 'youtube.com') === FALSE) { - $vid = $src; -} else { - // grab the v param - if ($parts = parse_url($src)) { - if (isset($parts['query'])) { - parse_str($parts['query'], $query_arr); - $vid = (isset($query_arr['v'])) ? $query_arr['v'] : FALSE; - } - } -} - -if ($vid) { - $movie_url = "http://www.youtube.com/v/$vid"; - - echo " -<object width=\"$width\" height=\"$height\"> - <param name=\"movie\" value=\"$movie_url\"></param> - <param name=\"allowFullScreen\" value=\"true\"></param> - <param name=\"allowscriptaccess\" value=\"always\"></param> - - <embed src=\"$movie_url\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"$width\" height=\"$height\"></embed> -</object> - "; -}
\ No newline at end of file diff --git a/mod/ecml/views/default/embed/web_services/content.php b/mod/ecml/views/default/embed/web_services/content.php deleted file mode 100644 index 9e7ffbbb4..000000000 --- a/mod/ecml/views/default/embed/web_services/content.php +++ /dev/null @@ -1,220 +0,0 @@ -<?php -/** - * URL -> ECML converter for supported 3rd party services. - * - * Tries to automatically detect which site/ecml to use. - * Will highlight the correct one. - * If can find none, will show an error. - * Lets users click to force an ECML keyword, but will display a warning. - * - */ - -$internal_name = elgg_get_array_value('internal_name', $vars); - -$keywords = ecml_get_keywords(); -elgg_sort_3d_array_by_value($keywords, 'name'); - -$keyword_js_array = array(); -$keywords_html = "<ul class='ecml_web_service_list clearfix'>"; -// include support for standard ECML so you can get previews and validation. -//$keyword_html = '<li class="ecml_web_service"><a class="ecml">Generic ECML</a></li>'; - -foreach ($keywords as $i => $v) { - if (!isset($v['type']) || $v['type'] != 'web_service') { - unset ($keywords[$i]); - continue; - } - - // make sure the classname doens't have invalid chars. - $class = str_replace(array('.', ','), '_', $i); - $keyword_js_array[] = $class; - - $keywords_html .= "<li class='ecml_web_service'><a class=\"$class link\">{$v['name']}</a></li>"; -} - -$keywords_html .= "</ul>"; - -$keywords_js = json_encode($keyword_js_array); - -$input = elgg_view('input/text', array( - 'internalid' => 'web_services_resource' -)); - -$embed = elgg_view('input/submit', array( - 'name' => 'buggy', - 'internalid' => 'embed_submit', - 'type' => 'button', - 'value' => elgg_echo('embed:embed'), - 'class' => 'elgg-submit-button disabled', - 'disabled' => TRUE -)); - -echo '<p>' . elgg_echo('ecml:embed:instructions') . '</p>'; - -echo $keywords_html; - -echo "<div class='embed_content_section instructions hidden'><a class='ecml_embed_instructions link'>Instructions</a>"; -echo "<div id='embed_ecml_keyword_help' class='hidden'></div></div>"; - -echo "<div id='embed_service_url'><label>URL<br />".$input."<div id='url_status' class=''></div></label>"; -echo "<div class='ecml_generated_code hidden'>ECML: <span id='ecml_code'></span></div></div>"; - -echo "<div class='embed_content_section preview hidden'><a class='ecml_embed_preview link'>Preview</a>"; -echo "<div id='ecml_preview' class='hidden'></div></div>"; - -echo "<div class='divider margin-top'></div>"; -echo $embed; - -?> - -<script type="text/javascript"> - -$(document).ready(function() { - $('a.ecml_embed_instructions.link').click(function() { - elgg_slide_toggle($(this), '.embed_content_section.instructions', '#embed_ecml_keyword_help'); - $('.ecml_embed_instructions').toggleClass('open'); - }); - - $('a.ecml_embed_preview.link').click(function() { - elgg_slide_toggle($(this), '.embed_content_section.preview', '#ecml_preview'); - $('.ecml_embed_preview').toggleClass('open'); - }); -}); - -$(function() { - var keywords = <?php echo $keywords_js; ?>; - var selected_service = ''; - var manual_selected_service = false; - var embed_button = $('#embed_submit'); - var url_status = $('#url_status'); - var embed_resource_input = $('#web_services_resource'); - - // counter for paused input to try to validate/generate a preview. - var rest_timeout_id = null; - var rest_min_time = 750; - var embed_generate_ecml_url = '<?php echo elgg_get_site_url(); ?>pg/ecml_generate'; - var embed_ecml_keyword_help_url = '<?php echo elgg_get_site_url(); ?>pg/ecml/'; - var internal_name = '<?php echo addslashes($internal_name); ?>'; - - var web_services_ecml_update = function() { - if (rest_timeout_id) { - clearTimeout(rest_timeout_id); - } - - if (manual_selected_service) { - // fire off preview attempt - rest_timeout_id = setTimeout(generate_ecml, rest_min_time); - return true; - } - - var value = $(this).val(); - var value_length = value.length; - - if (value_length > 0) { - //embed_button.removeAttr('disabled').removeClass('disabled');//.addClass('embed_warning'); - url_status.removeClass('success').addClass('failure'); - } else { - embed_button.attr('disabled', 'disabled').addClass('disabled'); - url_status.removeClass('success').removeClass('failure'); - } - - if (value_length < 5) { - $('.ecml_web_service a').removeClass('selected'); - return true; - } - - // if this is ECML check that it's a valid keyword - if (value.substr(0, 1) == '[') { - var keyword = value.split(' ')[0]; - keyword = keyword.replace('[', ''); - keyword = keyword.replace(']', ''); - if ($.inArray(keyword, keywords) >= 0) { - select_service(keyword); - } - } else { - // check if any of the ECML keywords exist in the - // string and select that service. - $(keywords).each(function(index, keyword) { - if (value.indexOf(keyword) >= 0) { - select_service(keyword); - return true; - } - }); - } - - // fire off a preview attempt - if (selected_service) { - rest_timeout_id = setTimeout(generate_ecml, rest_min_time); - } - }; - - var select_service = function(service) { - if ($.inArray(service, keywords) === false) { - return false; - } - - selected_service = service; - $('.ecml_web_service a').removeClass('selected'); - $('.ecml_web_service a.' + service).addClass('selected'); - $('.embed_content_section.instructions').removeClass('hidden'); // reveal instructions link/panel - } - - // pings back core to generate the ecml. - // includes a status, ecml code, and the generated html. - var generate_ecml = function() { - if (!selected_service) { - return false; - } - - var resource = embed_resource_input.val(); - var post_data = {'service': selected_service, 'resource': resource}; - - $.post(embed_generate_ecml_url, post_data, function(data) { - if (data.status == 'success') { - // show previews and update embed code. - $('#ecml_preview').html(data.html); - $('#ecml_code').html(data.ecml); - $('body').data('elgg_embed_ecml', data.ecml); - $('.embed_content_section.preview').removeClass('hidden'); // reveal preview link/panel - $('.ecml_generated_code').removeClass('hidden'); // reveal ecml generated code - - // set status for embed button - embed_button.removeAttr('disabled').removeClass('disabled'); - url_status.removeClass('failure').addClass('success'); - } else { - // data failure - embed_button.attr('disabled', 'disabled').addClass('disabled'); - url_status.removeClass('success').removeClass('failure'); - } - }, 'json'); - } - - // auto guess the service. - embed_resource_input.keyup(web_services_ecml_update); - - // manually specify the service - $('.ecml_web_service a').click(function() { - select_service($(this).attr('class').split(' ')[0]); - manual_selected_service = true; - - // show tip - var help_url = embed_ecml_keyword_help_url + selected_service + '?ajax=true'; - $('#embed_ecml_keyword_help').load(help_url); - }); - - $('#embed_submit').click(function() { - // insert the ECML - // if the ECML input is empty, insert the resource. - if (!(content = $('body').data('elgg_embed_ecml'))) { - // @todo display an error? - content = embed_resource_input.val(); - } - - elggEmbedInsertContent(content, internal_name); - - return false; - }); -}); - - -</script>
\ No newline at end of file diff --git a/mod/ecml/views/default/settings/ecml/edit.php b/mod/ecml/views/default/settings/ecml/edit.php deleted file mode 100644 index 8c1a3b4a1..000000000 --- a/mod/ecml/views/default/settings/ecml/edit.php +++ /dev/null @@ -1,133 +0,0 @@ -<?php -/** - * Configs granular access - * - * @package ECML - */ - -$views = $vars['config']->ecml_parse_views; -$keywords = $vars['config']->ecml_keywords; -$perms = $vars['config']->ecml_permissions; - -ksort($views); -ksort($keywords); - -echo '<p class="margin-top">' . elgg_echo('ecml:admin:instruction') . '</p>'; - -// yes I'm using a table because this is table. -$form_body = <<<___END -<table class="ecml_admin_table"> - <tr> - <th> </th> -___END; - -foreach ($views as $view => $view_desc) { - $form_body .= "<th><acronym class=\"ecml_view ecml_check_all\" title=\"$view\">$view_desc</acronym></th>"; - $n++; -} -$form_body .= '</tr>'; - -$odd = 'odd'; -foreach ($keywords as $keyword => $keyword_info) { - $keyword_desc = $keyword_info['description']; - if (isset($keyword_info['restricted'])) { - $restricted = elgg_echo('ecml:admin:restricted'); - $form_body .= " - <tr class=\"ecml_row_$odd\"> - <td class=\"ecml_keyword_desc\"><acronym class=\"ecml_keyword ecml_restricted\" title=\"$keyword_desc\">$keyword ($restricted)</acronym></td> - "; - } else { - $form_body .= " - <tr class=\"ecml_row_$odd\"> - <td class=\"ecml_keyword_desc\"><acronym class=\"ecml_keyword ecml_check_all\" title=\"$keyword_desc\">$keyword</acronym></td> - "; - } - 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 .= "<td><input type=\"checkbox\" $checked name=\"whitelist[$view][]\" value=\"$keyword\" disabled=\"disabled\"/></td>"; - } else { - $checked = (!in_array($keyword, $perms[$view])) ? 'checked="checked"' : ''; - - // ooook. input/checkboxes isn't overly useful. - // do it ourself. - $form_body .= "<td><input type=\"checkbox\" name=\"whitelist[$view][]\" value=\"$keyword\" $checked /></td>"; - } - } - $form_body .= '</tr>'; - - $odd = ($odd == 'odd') ? 'even' : 'odd'; -} - -$form_body .= '</table>'; - -echo $form_body; - -?> -<script type="text/javascript"> - -$(document).ready(function() { - // append check all link - $('.ecml_check_all').before('<input type="checkbox" checked="checked" class="check_all">'); - - // determin initial state of checkall checkbox. - $('.ecml_check_all').each(function() { - var keyword = $(this).hasClass('ecml_keyword'); - var checkbox = $(this).parent().find('input[type=checkbox]'); - var checked; - - // no keywords checked, checkall unchecked - // any keyword checked, checkall unchecked - // all keywords checked, checkall checked - - // if keyword, check the TR - if (keyword) { - checked = true; - $(this).parent().parent().find('input').each(function() { - if (!$(this).hasClass('check_all') && !$(this).attr('disabled')) { - checked = (checked && $(this).attr('checked')); - // can't break... - } - }); - checkbox.attr('checked', checked); - } else { - checked = true; - var rowIndex = $(this).parent().parent().children().index($(this).parent()); - - $('.ecml_admin_table > tbody > tr td:nth-child(' + (rowIndex + 1) + ') input[type=checkbox]').each(function() { - if (!$(this).hasClass('check_all') && !$(this).attr('disabled')) { - checked = (checked && $(this).attr('checked')); - // can't break... - } - }); - checkbox.attr('checked', checked); - } - }); - - // handle checkall boxes - $('input.check_all').click(function() { - // yoinked from - // http://stackoverflow.com/questions/788225/table-row-and-column-number-in-jquery - var rowIndex = $(this).parent().parent().children().index($(this).parent()); - var check = $(this).attr('checked'); - - // clicked on a keyword on the left, check all boxes in the tr - if (rowIndex == 0) { - $(this).parent().parent().find('input').each(function() { - if (!$(this).attr('disabled')) { - $(this).attr('checked', check); - } - }); - } else { - boxes = $('.ecml_admin_table > tbody > tr td:nth-child(' + (rowIndex + 1) + ') input[type=checkbox]'); - boxes.each(function() { - if (!$(this).attr('disabled')) { - $(this).attr('checked', check); - } - }); - } - }); -}); -</script> |