diff options
Diffstat (limited to 'mod/embed')
26 files changed, 1174 insertions, 0 deletions
diff --git a/mod/embed/README.txt b/mod/embed/README.txt new file mode 100644 index 000000000..17f867d7a --- /dev/null +++ b/mod/embed/README.txt @@ -0,0 +1,10 @@ +Embed plugin +(c) 2009 Curverider Ltd +Released under the GNU Public License version 2 +http://www.gnu.org/licenses/old-licenses/gpl-2.0.html + +The embed plugin requires Elgg 1.5 (or prior to the Elgg 1.5 +release, Elgg revision 2634 or above) and the file plugin. + +It makes use of the jQuery form plugin, available at: +http://malsup.com/jquery/form/
\ No newline at end of file diff --git a/mod/embed/embed.php b/mod/embed/embed.php new file mode 100644 index 000000000..461bbdebb --- /dev/null +++ b/mod/embed/embed.php @@ -0,0 +1,38 @@ +<?php + + // This page can only be run from within the Elgg framework + if (!is_callable('elgg_view')) exit; + + // Get the name of the form field we need to inject into + $internalname = get_input('internalname'); + + if (!isloggedin()) exit; + + global $SESSION; + + $offset = (int) get_input('offset',0); + $simpletype = get_input('simpletype'); + $entity_types = array('object' => array('file')); + + if (empty($simpletype)) { + $count = elgg_get_entities(array('type' => 'object', 'subtype' => 'file', 'owner_guid' => $SESSION['user']->guid, 'count' => TRUE)); + $entities = elgg_get_entities(array('type' => 'object', 'subtype' => 'file', 'owner_guid' => $SESSION['user']->guid, 'limit' => 6, 'offset' => $offset)); + } else { + $count = elgg_get_entities_from_metadata(array('metadata_name' => 'simpletype', 'metadata_value' => $simpletype, 'types' => 'object', 'subtypes' => 'file', 'owner_guid' => $SESSION['user']->guid, 'limit' => 6, 'offset' => $offset, 'count' => TRUE)); + $entities = elgg_get_entities_from_metadata(array('metadata_name' => 'simpletype', 'metadata_value' => $simpletype, 'types' => 'object', 'subtypes' => 'file', 'owner_guid' => $SESSION['user']->guid, 'limit' => 6, 'offset' => $offset)); + } + + $types = get_tags(0,10,'simpletype','object','file',$SESSION['user']->guid); + + // Echo the embed view + echo elgg_view('embed/media', array( + 'entities' => $entities, + 'internalname' => $internalname, + 'offset' => $offset, + 'count' => $count, + 'simpletype' => $simpletype, + 'limit' => 6, + 'simpletypes' => $types, + )); + +?>
\ No newline at end of file diff --git a/mod/embed/images/button_spacer.gif b/mod/embed/images/button_spacer.gif Binary files differnew file mode 100644 index 000000000..5bfd67a2d --- /dev/null +++ b/mod/embed/images/button_spacer.gif diff --git a/mod/embed/images/close_button.gif b/mod/embed/images/close_button.gif Binary files differnew file mode 100644 index 000000000..822ea8527 --- /dev/null +++ b/mod/embed/images/close_button.gif diff --git a/mod/embed/images/loading.gif b/mod/embed/images/loading.gif Binary files differnew file mode 100644 index 000000000..5a9af96d2 --- /dev/null +++ b/mod/embed/images/loading.gif diff --git a/mod/embed/images/media_modal.png b/mod/embed/images/media_modal.png Binary files differnew file mode 100644 index 000000000..9d206901a --- /dev/null +++ b/mod/embed/images/media_modal.png diff --git a/mod/embed/languages/en.php b/mod/embed/languages/en.php new file mode 100644 index 000000000..ca57f4a9b --- /dev/null +++ b/mod/embed/languages/en.php @@ -0,0 +1,18 @@ +<?php + + $english = array( + + 'media:insert' => 'Embed / upload media', + + 'embed:instructions' => 'Click on any file to embed it into your content.', + + 'embed:media' => 'Embed media', + 'upload:media' => 'Upload media', + + 'embed:file:required' => 'No file upload facilities were found. The system administrator may need to upload the file plugin or similar.', + + ); + + add_translation("en",$english); + +?>
\ No newline at end of file diff --git a/mod/embed/manifest.xml b/mod/embed/manifest.xml new file mode 100644 index 000000000..a14e99b4b --- /dev/null +++ b/mod/embed/manifest.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<plugin_manifest> + <field key="author" value="Curverider" /> + <field key="version" value="1.7" /> + <field key="description" value="Allows users to easily upload and embed media into text areas." /> + <field key="website" value="http://www.elgg.org/" /> + <field key="copyright" value="(C) Curverider 2009-2010" /> + <field key="licence" value="GNU Public License version 2" /> + <field key="elgg_version" value="2010030101" /> +</plugin_manifest> diff --git a/mod/embed/start.php b/mod/embed/start.php new file mode 100644 index 000000000..b14767381 --- /dev/null +++ b/mod/embed/start.php @@ -0,0 +1,50 @@ +<?php + + /** + * Elgg media embed plugin + * + * @package ElggEmbed + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.com/ + */ + + /** + * Init function + * + */ + function embed_init() { + + // Extend useful views with stuff we need for our embed modal + elgg_extend_view('css','embed/css'); + elgg_extend_view('js/initialise_elgg','embed/js'); + elgg_extend_view('metatags','embed/metatags'); + elgg_extend_view('input/longtext','embed/link',10); + + // Page handler for the modal media embed + register_page_handler('embed','embed_page_handler'); + + } + + /** + * Runs the 'embed' script + * + */ + function embed_page_handler($page) { + + switch($page[0]) { + case 'upload': require_once(dirname(__FILE__) . '/upload.php'); + exit; + break; + default: require_once(dirname(__FILE__) . '/embed.php'); + exit; + break; + } + + } + + // Register the init action + register_elgg_event_handler('init','system','embed_init',10); + +?> diff --git a/mod/embed/upload.php b/mod/embed/upload.php new file mode 100644 index 000000000..21a24786d --- /dev/null +++ b/mod/embed/upload.php @@ -0,0 +1,17 @@ +<?php + + // This page can only be run from within the Elgg framework + if (!is_callable('elgg_view')) exit; + + // Get the name of the form field we need to inject into + $internalname = get_input('internalname'); + + global $SESSION; + + // Echo the embed view + echo elgg_view('embed/upload', array( + 'entities' => $entities, + 'internalname' => $internalname, + )); + +?>
\ No newline at end of file diff --git a/mod/embed/views/default/embed/addcontentjs.php b/mod/embed/views/default/embed/addcontentjs.php new file mode 100644 index 000000000..ee3678b89 --- /dev/null +++ b/mod/embed/views/default/embed/addcontentjs.php @@ -0,0 +1,4 @@ + + var entity; + $('textarea[name='+entityname+']').val($('textarea[name='+entityname+']').val() + ' ' + content); + diff --git a/mod/embed/views/default/embed/css.php b/mod/embed/views/default/embed/css.php new file mode 100644 index 000000000..31d474a61 --- /dev/null +++ b/mod/embed/views/default/embed/css.php @@ -0,0 +1,222 @@ +<?php + + /** + * Elgg embed CSS - standard across all themes + * + * @package embed + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider <info@elgg.com> + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + */ + +?> + +#facebox { + position: absolute; + top: 0; + left: 0; + z-index: 10000; + text-align: left; +} +#facebox .popup { + position: relative; +} +#facebox .body { + padding: 10px; + background: white; + width: 730px; + -webkit-border-radius: 12px; + -moz-border-radius: 12px; +} +#facebox .loading { + text-align: center; + padding: 100px 10px 100px 10px; +} +#facebox .image { + text-align: center; +} +#facebox .footer { + float: right; + width:22px; + height:22px; + margin:0; + padding:0; +} +#facebox .footer img.close_image { + background: url(<?php echo $vars['url']; ?>mod/embed/images/close_button.gif) no-repeat left top; +} +#facebox .footer img.close_image:hover { + background: url(<?php echo $vars['url']; ?>mod/embed/images/close_button.gif) no-repeat left -31px; +} +#facebox .footer a { + -moz-outline: none; + outline: none; +} +#facebox_overlay { + position: fixed; + top: 0px; + left: 0px; + height:100%; + width:100%; +} +.facebox_hide { + z-index:-100; +} +.facebox_overlayBG { + background-color: #000000; + z-index: 9999; +} + +* html #facebox_overlay { /* ie6 hack */ + position: absolute; + height: expression(document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'); +} + + +/* EMBED MEDIA TABS */ +#embed_media_tabs { + margin:10px 0 0 10px; + padding:0; +} +#embed_media_tabs ul { + list-style: none; + padding-left: 0; +} +#embed_media_tabs ul li { + float: left; + margin:0; + background:white; +} +#embed_media_tabs ul li a { + font-weight: bold; + font-size:1.35em; + text-align: center; + text-decoration: none; + color:#b6b6b6; + background: white; + display: block; + padding: 0 10px 0 10px; + margin:0 10px 0 10px; + height:25px; + width:auto; + border-top:2px solid #dedede; + border-left:2px solid #dedede; + border-right:2px solid #dedede; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; +} +/* IE6 fix */ +* html #embed_media_tabs ul li a { display: inline; } + +#embed_media_tabs ul li a:hover { + background:#b6b6b6; + color:white; + border-top:2px solid #b6b6b6; + border-left:2px solid #b6b6b6; + border-right:2px solid #b6b6b6; +} +#embed_media_tabs ul li a.embed_tab_selected { + border-top:2px solid #dedede; + border-left:2px solid #dedede; + border-right:2px solid #dedede; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; + background: #dedede; + color:#666666; + position: relative; + /* top: 2px; - only needed if selected tab needs to sit over a border */ +} + +#mediaUpload, +#mediaEmbed { + margin:0 5px 10px 5px; + padding:10px; + border:2px solid #dedede; + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + background: #dedede; +} +#mediaEmbed .search_listing { + margin:0 0 5px 0; + background: white; +} + +h1.mediaModalTitle { + /* color:#0054A7; */ + font-size:1.35em; + line-height:1.2em; + margin:0 0 0 8px; + padding:5px; +} + +#mediaEmbed .pagination, +#mediaUpload .pagination { + float:right; + padding:5px; + background:white; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; +} +#mediaUpload label { + font-size:120%; +} +#mediaEmbed p.embedInstructions { + margin:10px 0 5px 0; +} +a.embed_media { + margin:0; + float:right; + display:block; + text-align: right; + font-size:1.0em; + font-weight: normal; +} +label a.embed_media { + font-size:0.8em; +} + + + + +/* *************************************** + PAGINATION +*************************************** */ +#mediaEmbed .pagination .pagination_number { + border:1px solid #999999; + color:#666666; +} +#mediaEmbed .pagination .pagination_number:hover { + background:#aaaaaa; + color:black; +} + +#mediaEmbed .pagination .pagination_previous, +#mediaEmbed .pagination .pagination_next { + border:1px solid #999999; + color:#666666; +} +#mediaEmbed .pagination .pagination_previous:hover, +#mediaEmbed .pagination .pagination_next:hover { + background:#aaaaaa; + color:black; +} +#mediaEmbed .pagination .pagination_currentpage { + background:#666666; + border:1px solid #666666; + color:white; +} + + + + + + + + + + diff --git a/mod/embed/views/default/embed/js.php b/mod/embed/views/default/embed/js.php new file mode 100644 index 000000000..fa809ce23 --- /dev/null +++ b/mod/embed/views/default/embed/js.php @@ -0,0 +1,379 @@ + + function elggUpdateContent(content, entityname) { + content = ' ' + content + ' '; + <?php + echo elgg_view('embed/addcontentjs'); + ?> + $.facebox.close(); + } + + +/* + * Facebox (for jQuery) + * version: 1.2 (05/05/2008) + * @requires jQuery v1.2 or later + * + * Examples at http://famspam.com/facebox/ + * + * Licensed under the MIT: + * http://www.opensource.org/licenses/mit-license.php + * + * Copyright 2007, 2008 Chris Wanstrath [ chris@ozmm.org ] + * + * Usage: + * + * jQuery(document).ready(function() { + * jQuery('a[rel*=facebox]').facebox() + * }) + * + * <a href="#terms" rel="facebox">Terms</a> + * Loads the #terms div in the box + * + * <a href="terms.html" rel="facebox">Terms</a> + * Loads the terms.html page in the box + * + * <a href="terms.png" rel="facebox">Terms</a> + * Loads the terms.png image in the box + * + * + * You can also use it programmatically: + * + * jQuery.facebox('some html') + * + * The above will open a facebox with "some html" as the content. + * + * jQuery.facebox(function($) { + * $.get('blah.html', function(data) { $.facebox(data) }) + * }) + * + * The above will show a loading screen before the passed function is called, + * allowing for a better ajaxy experience. + * + * The facebox function can also display an ajax page or image: + * + * jQuery.facebox({ ajax: 'remote.html' }) + * jQuery.facebox({ image: 'dude.jpg' }) + * + * Want to close the facebox? Trigger the 'close.facebox' document event: + * + * jQuery(document).trigger('close.facebox') + * + * Facebox also has a bunch of other hooks: + * + * loading.facebox + * beforeReveal.facebox + * reveal.facebox (aliased as 'afterReveal.facebox') + * init.facebox + * + * Simply bind a function to any of these hooks: + * + * $(document).bind('reveal.facebox', function() { ...stuff to do after the facebox and contents are revealed... }) + * + */ +(function($) { + $.facebox = function(data, klass) { + $.facebox.loading() + + if (data.ajax) fillFaceboxFromAjax(data.ajax) + else if (data.image) fillFaceboxFromImage(data.image) + else if (data.div) fillFaceboxFromHref(data.div) + else if ($.isFunction(data)) data.call($) + else $.facebox.reveal(data, klass) + } + + /* + * Public, $.facebox methods + */ + + $.extend($.facebox, { + settings: { + opacity : 0.7, + overlay : true, + loadingImage : '<?php echo $vars['url']; ?>mod/embed/images/loading.gif', + closeImage : '<?php echo $vars['url']; ?>mod/embed/images/button_spacer.gif', + imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ], + faceboxHtml : '\ + <div id="facebox" style="display:none;"> \ + <div class="popup"> \ + <div class="body"> \ + <div class="footer"> \ + <a href="#" class="close"> \ + <img src="<?php echo $vars['url']; ?>mod/embed/images/button_spacer.gif" title="close" class="close_image" width="22" height="22" border="0" /> \ + </a> \ + </div> \ + <div class="content"> \ + </div> \ + </div> \ + </div> \ + </div>' + }, + + loading: function() { + init() + if ($('#facebox .loading').length == 1) return true + showOverlay() + + $('#facebox .content').empty() + $('#facebox .body').children().hide().end(). + append('<div class="loading"><br /><br /><img src="'+$.facebox.settings.loadingImage+'"/><br /><br /></div>') + + $('#facebox').css({ + top: getPageScroll()[1] + (getPageHeight() / 10), + // Curverider addition (pagewidth/2 - modalwidth/2) + left: ((getPageWidth() / 2) - ($('#facebox').width() / 2)) + }).show() + + $(document).bind('keydown.facebox', function(e) { + if (e.keyCode == 27) $.facebox.close() + return true + }) + $(document).trigger('loading.facebox') + }, + + reveal: function(data, klass) { + $(document).trigger('beforeReveal.facebox') + if (klass) $('#facebox .content').addClass(klass) + $('#facebox .content').append(data) + + setTimeout(function() { + $('#facebox .loading').remove(); + $('#facebox .body').children().fadeIn('slow'); + $('#facebox').css('left', $(window).width() / 2 - ($('#facebox').width() / 2)); + $(document).trigger('reveal.facebox').trigger('afterReveal.facebox'); + }, 1000); + + //$('#facebox .loading').remove() + //$('#facebox .body').children().fadeIn('slow') + //$('#facebox').css('left', $(window).width() / 2 - ($('#facebox').width() / 2)) + //$(document).trigger('reveal.facebox').trigger('afterReveal.facebox') + + }, + + close: function() { + $(document).trigger('close.facebox') + return false + } + }) + + /* + * Public, $.fn methods + */ + + // Curverider addition +/* + $.fn.wait = function(time, type) { + time = time || 3000; + type = type || "fx"; + return this.queue(type, function() { + var self = this; + setTimeout(function() { + //$(self).queue(); + $('#facebox .loading').remove(); + }, time); + }); + }; +*/ + + $.fn.facebox = function(settings) { + init(settings) + + function clickHandler() { + $.facebox.loading(true) + + // support for rel="facebox.inline_popup" syntax, to add a class + // also supports deprecated "facebox[.inline_popup]" syntax + var klass = this.rel.match(/facebox\[?\.(\w+)\]?/) + if (klass) klass = klass[1] + + fillFaceboxFromHref(this.href, klass) + return false + } + + return this.click(clickHandler) + } + + /* + * Private methods + */ + + // called one time to setup facebox on this page + function init(settings) { + if ($.facebox.settings.inited) return true + else $.facebox.settings.inited = true + + $(document).trigger('init.facebox') + /* makeCompatible() */ + + var imageTypes = $.facebox.settings.imageTypes.join('|') + $.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i') + + if (settings) $.extend($.facebox.settings, settings) + $('body').append($.facebox.settings.faceboxHtml) + + var preload = [ new Image(), new Image() ] + preload[0].src = $.facebox.settings.closeImage + preload[1].src = $.facebox.settings.loadingImage + preload.push(new Image()) + +/* + $('#facebox').find('.b:first, .bl, .br, .tl, .tr').each(function() { + preload.push(new Image()) + preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1') + }) +*/ + + $('#facebox .close').click($.facebox.close) + $('#facebox .close_image').attr('src', $.facebox.settings.closeImage) + } + + // getPageScroll() by quirksmode.com + function getPageScroll() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + return new Array(xScroll,yScroll) + } + + // Adapted from getPageSize() by quirksmode.com + function getPageHeight() { + var windowHeight + if (self.innerHeight) { // all except Explorer + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { // other Explorers + windowHeight = document.body.clientHeight; + } + return windowHeight + } + + // Curverider addition + function getPageWidth() { + var windowWidth; + if( typeof( window.innerWidth ) == 'number' ) { + windowWidth = window.innerWidth; //Non-IE + } else if( document.documentElement && ( document.documentElement.clientWidth ) ) { + windowWidth = document.documentElement.clientWidth; //IE 6+ in 'standards compliant mode' + } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { + windowWidth = document.body.clientWidth; //IE 4 compatible + } + return windowWidth + } + + + + // Backwards compatibility +/* + function makeCompatible() { + var $s = $.facebox.settings + + $s.loadingImage = $s.loading_image || $s.loadingImage + $s.closeImage = $s.close_image || $s.closeImage + $s.imageTypes = $s.image_types || $s.imageTypes + $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml + } +*/ + + // Figures out what you want to display and displays it + // formats are: + // div: #id + // image: blah.extension + // ajax: anything else + function fillFaceboxFromHref(href, klass) { + // div + if (href.match(/#/)) { + var url = window.location.href.split('#')[0] + var target = href.replace(url,'') + $.facebox.reveal($(target).clone().show(), klass) + + // image + } else if (href.match($.facebox.settings.imageTypesRegexp)) { + fillFaceboxFromImage(href, klass) + // ajax + } else { + fillFaceboxFromAjax(href, klass) + } + } + + function fillFaceboxFromImage(href, klass) { + var image = new Image() + image.onload = function() { + $.facebox.reveal('<div class="image"><img src="' + image.src + '" /></div>', klass) + } + image.src = href + } + + function fillFaceboxFromAjax(href, klass) { + $.get(href, function(data) { $.facebox.reveal(data, klass) }) + } + + function skipOverlay() { + return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null + } + + function showOverlay() { + if (skipOverlay()) return + + if ($('facebox_overlay').length == 0) + $("body").append('<div id="facebox_overlay" class="facebox_hide"></div>') + + $('#facebox_overlay').hide().addClass("facebox_overlayBG") + .css('opacity', $.facebox.settings.opacity) + /* .click(function() { $(document).trigger('close.facebox') }) */ + .fadeIn(400) + return false + } + + function hideOverlay() { + if (skipOverlay()) return + + $('#facebox_overlay').fadeOut(400, function(){ + $("#facebox_overlay").removeClass("facebox_overlayBG") + $("#facebox_overlay").addClass("facebox_hide") + $("#facebox_overlay").remove() + }) + + return false + } + + /* + * Bindings + */ + + $(document).bind('close.facebox', function() { + $(document).unbind('keydown.facebox') + $('#facebox').fadeOut(function() { + $('#facebox .content').removeClass().addClass('content') + hideOverlay() + $('#facebox .loading').remove() + }) + }) + + + + + // Curverider addition + $(window).resize(function(){ + //alert("resized"); + + $('#facebox').css({ + top: getPageScroll()[1] + (getPageHeight() / 10), + left: ((getPageWidth() / 2) - 365) + }) + + + }); + + + + + +})(jQuery); diff --git a/mod/embed/views/default/embed/link.php b/mod/embed/views/default/embed/link.php new file mode 100644 index 000000000..f8db0bd85 --- /dev/null +++ b/mod/embed/views/default/embed/link.php @@ -0,0 +1 @@ +<a class="embed_media" href="<?php echo $vars['url'] . 'pg/embed/media'; ?>?internalname=<?php echo $vars['internalname']; ?>" rel="facebox"><?php echo elgg_echo('media:insert'); ?></a><br />
\ No newline at end of file diff --git a/mod/embed/views/default/embed/media.php b/mod/embed/views/default/embed/media.php new file mode 100644 index 000000000..48bf65fdf --- /dev/null +++ b/mod/embed/views/default/embed/media.php @@ -0,0 +1,66 @@ +<h1 class="mediaModalTitle">Embed / Upload Media</h1> +<?php + + echo elgg_view('embed/tabs',array('tab' => 'media', 'internalname' => $vars['internalname'])); +?> + <div id='mediaEmbed'> +<?php + echo elgg_view('embed/pagination',array( + 'offset' => $vars['offset'], + 'baseurl' => $vars['url'] . 'pg/embed/media?internalname=' . $vars['internalname'] . "&simpletype=" . $vars['simpletype'], + 'limit' => $vars['limit'], + 'count' => $vars['count'] + )); + + echo elgg_view('embed/simpletype',array( + 'internalname' => $vars['internalname'], + 'simpletypes' => $vars['simpletypes'], + 'simpletype' => $vars['simpletype'], + )); + + $context = get_context(); + $entities = $vars['entities']; + if (is_array($entities) && !empty($entities)) { + + echo "<p class=\"embedInstructions\">" . elgg_echo('embed:instructions') . "</p>"; + + foreach($entities as $entity) { + if ($entity instanceof ElggEntity) { + + $mime = $entity->mimetype; + + $enttype = $entity->getType(); + $entsubtype = $entity->getSubtype(); + + if (elgg_view_exists($enttype . '/' . $entsubtype . '/embed')) { + $content = elgg_view($enttype . '/' . $entsubtype . '/embed', array('entity' => $entity, 'full' => true)); + } else { + $content = elgg_view($enttype . '/default/embed', array('entity' => $entity, 'full' => true)); + } + + $content = str_replace("\n","", $content); + $content = str_replace("\r","", $content); + //$content = htmlentities($content,null,'utf-8'); + $content = htmlentities($content, ENT_COMPAT, "UTF-8"); + + $link = "javascript:elggUpdateContent('{$content}','{$vars['internalname']}');"; + if ($entity instanceof ElggObject) { $title = $entity->title; $mime = $entity->mimetype; } else { $title = $entity->name; $mime = ''; } + + set_context('search'); + + if (elgg_view_exists("{$enttype}/{$entsubtype}/embedlist")) { + $entview = elgg_view("{$enttype}/{$entsubtype}/embedlist",array('entity' => $entity)); + } else { + $entview = elgg_view_entity($entity); + } + $entview = str_replace($entity->getURL(),$link,$entview); + echo $entview; + + set_context($context); + + } + } + } + +?> +</div>
\ No newline at end of file diff --git a/mod/embed/views/default/embed/metatags.php b/mod/embed/views/default/embed/metatags.php new file mode 100644 index 000000000..3c7ab87a9 --- /dev/null +++ b/mod/embed/views/default/embed/metatags.php @@ -0,0 +1,5 @@ + <script type="text/javascript"> + jQuery(document).ready(function($) { + $('a[rel*=facebox]').facebox() + }); + </script> diff --git a/mod/embed/views/default/embed/pagination.php b/mod/embed/views/default/embed/pagination.php new file mode 100644 index 000000000..d087fc12c --- /dev/null +++ b/mod/embed/views/default/embed/pagination.php @@ -0,0 +1,131 @@ +<?php + + /** + * Elgg pagination + * + * @package Elgg + * @subpackage Core + * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2 + * @author Curverider Ltd + * @copyright Curverider Ltd 2008-2010 + * @link http://elgg.org/ + * + */ + + if (!isset($vars['offset'])) { + $offset = 0; + } else { + $offset = $vars['offset']; + } + if ((!isset($vars['limit'])) || (!$vars['limit'])) { + $limit = 10; + } else { + $limit = (int)$vars['limit']; + } + if (!isset($vars['count'])) { + $count = 0; + } else { + $count = $vars['count']; + } + if (!isset($vars['word'])) { + $word = "offset"; + } else { + $word = $vars['word']; + } + if (isset($vars['nonefound'])) { + $nonefound = $vars['nonefound']; + } else { + $nonefound = true; + } + + $totalpages = ceil($count / $limit); + $currentpage = ceil($offset / $limit) + 1; + + //only display if there is content to paginate through or if we already have an offset + if (($count > $limit || $offset > 0) && get_context() != 'widget') { + +?> + +<div class="pagination"> +<?php + + if ($offset > 0) { + $prevoffset = $offset - $limit; + if ($prevoffset < 0) { + $prevoffset = 0; + } + + $prevurl = elgg_http_add_url_query_elements($baseurl, array($word => $prevoffset)); + + echo "<a onclick=\"javascript:$('.popup .content').load('{$prevurl}'); return false\" href=\"#\" class=\"pagination_previous\">« ". elgg_echo("previous") ."</a> "; + + } + + if ($offset > 0 || $offset < ($count - $limit)) { + + $currentpage = round($offset / $limit) + 1; + $allpages = ceil($count / $limit); + + $i = 1; + $pagesarray = array(); + while ($i <= $allpages && $i <= 4) { + $pagesarray[] = $i; + $i++; + } + $i = $currentpage - 2; + while ($i <= $allpages && $i <= ($currentpage + 2)) { + if ($i > 0 && !in_array($i,$pagesarray)) + $pagesarray[] = $i; + $i++; + } + $i = $allpages - 3; + while ($i <= $allpages) { + if ($i > 0 && !in_array($i,$pagesarray)) + $pagesarray[] = $i; + $i++; + } + + sort($pagesarray); + + $prev = 0; + foreach($pagesarray as $i) { + + if (($i - $prev) > 1) { + + echo "<span class=\"pagination_more\">...</span>"; + + } + + $curoffset = (($i - 1) * $limit); + $counturl = elgg_http_add_url_query_elements($base_url, array($word => $curoffset)); + + if ($curoffset != $offset) { + echo " <a onclick=\"javascript:$('.popup .content').load('{$counturl}'); return false\" href=\"#\" class=\"pagination_number\">{$i}</a> "; + } else { + echo "<span class=\"pagination_currentpage\"> {$i} </span>"; + } + $prev = $i; + + } + + } + + if ($offset < ($count - $limit)) { + + $nextoffset = $offset + $limit; + if ($nextoffset >= $count) { + $nextoffset--; + } + + $nexturl = elgg_http_add_url_query_elements($baseurl, array($word => $nextoffset)); + + echo " <a onclick=\"javascript:$('.popup .content').load('{$nexturl}'); return false\" href=\"#\" class=\"pagination_next\">" . elgg_echo("next") . " »</a>"; + + } + +?> +<br class="clearfloat" /> +</div> +<?php + } // end of pagination check if statement +?> diff --git a/mod/embed/views/default/embed/simpletype.php b/mod/embed/views/default/embed/simpletype.php new file mode 100644 index 000000000..f92678f52 --- /dev/null +++ b/mod/embed/views/default/embed/simpletype.php @@ -0,0 +1,39 @@ + <select name="simpletype" id="embed_simpletype_select"> + +<?php + + $all = new stdClass; + $all->tag = "all"; + $vars['simpletypes'][] = $all; + $vars['simpletypes'] = array_reverse($vars['simpletypes']); + + if (isset($vars['simpletypes']) && is_array($vars['simpletypes'])) + foreach($vars['simpletypes'] as $type) { + + if ($vars['simpletype'] == $type->tag || (empty($vars['simpletype']) && $type->tag == 'all')) { + $selected = 'selected = "selected"'; + } else $selected = ''; + $tag = $type->tag; + if ($tag != "all") { + $label = elgg_echo("file:type:" . $tag); + } else { + $tag = ''; + $label = elgg_echo('all'); + } + +?> + <option <?php echo $selected; ?> value="<?php echo $tag; ?>"><?php echo $label; ?></option> +<?php + + } + +?> + + </select> + <script type="text/javascript"> + $('#embed_simpletype_select').change(function(){ + var simpletype = $('#embed_simpletype_select').val(); + var url = '<?php echo $vars['url']; ?>pg/embed/media?simpletype=' + simpletype + '&internalname=<?php echo $vars['internalname']; ?>'; + $('.popup .content').load(url); + }); + </script> diff --git a/mod/embed/views/default/embed/tabs.php b/mod/embed/views/default/embed/tabs.php new file mode 100644 index 000000000..8b2f5bde4 --- /dev/null +++ b/mod/embed/views/default/embed/tabs.php @@ -0,0 +1,23 @@ +<?php + + $embedselected = ''; + $uploadselected = ''; + if ($vars['tab'] == 'media') { + $embedselected = 'class="embed_tab_selected"'; + } else { + $uploadselected = 'class="embed_tab_selected"'; + } + +?> + +<div id="embed_media_tabs"> + <ul> + <li> + <a href="#" <?php echo $embedselected; ?> onclick="javascript:$('.popup .content').load('<?php echo $vars['url'] . 'pg/embed/media'; ?>?internalname=<?php echo $vars['internalname']; ?>'); return false"><?php echo elgg_echo('embed:media'); ?></a> + </li> + <li> + <a href="#" <?php echo $uploadselected; ?> onclick="javascript:$('.popup .content').load('<?php echo $vars['url'] . 'pg/embed/upload'; ?>?internalname=<?php echo $vars['internalname']; ?>'); return false"><?php echo elgg_echo('upload:media'); ?></a> + </li> + </ul> +</div> +<div class="clearfloat"></div>
\ No newline at end of file diff --git a/mod/embed/views/default/embed/upload.php b/mod/embed/views/default/embed/upload.php new file mode 100644 index 000000000..a727501dd --- /dev/null +++ b/mod/embed/views/default/embed/upload.php @@ -0,0 +1,88 @@ +<h1 class="mediaModalTitle">Embed / Upload Media</h1> +<?php + + echo elgg_view('embed/tabs',array('tab' => 'upload', 'internalname'=>get_input('internalname'))); + + if (!elgg_view_exists('file/upload')) { + echo "<p>" . elgg_echo('embed:file:required') . "</p>"; + } else { + $action = 'file/upload'; + +?> + <form id="mediaUpload" action="<?php echo $vars['url']; ?>action/file/upload" method="post" enctype="multipart/form-data"> + <p> + <label for="upload"><?php echo elgg_echo("file:file"); ?><br /> + <?php + echo elgg_view('input/securitytoken'); + echo elgg_view("input/file",array('internalname' => 'upload', 'js' => 'id="upload"')); + + ?> + </label></p> + <p> + <label><?php echo elgg_echo("title"); ?><br /> + <?php + + echo elgg_view("input/text", array( + "internalname" => "title", + "value" => $title, + )); + + ?> + </label> + </p> + <p> + <label for="filedescription"><?php echo elgg_echo("description"); ?><br /> + <textarea class="input-textarea" name="description" id="filedescription"></textarea> + </label></p> + + <p> + <label><?php echo elgg_echo("tags"); ?><br /> + <?php + echo elgg_view("input/tags", array( + "internalname" => "tags", + "value" => $tags, + )); + + ?> + </label> + </p> + <p> + <label> + <?php echo elgg_echo('access'); ?><br /> + <?php echo elgg_view('input/access', array('internalname' => 'access_id','value' => ACCESS_DEFAULT)); ?> + </label> + </p> + + <p> + <?php + + if (isset($vars['container_guid'])) + echo "<input type=\"hidden\" name=\"container_guid\" value=\"{$vars['container_guid']}\" />"; + if (isset($vars['entity'])) + echo "<input type=\"hidden\" name=\"file_guid\" value=\"{$vars['entity']->getGUID()}\" />"; + + ?> + <input type="submit" value="<?php echo elgg_echo("save"); ?>" /> + </p> + </form> + <script type="text/javascript"> + // wait for the DOM to be loaded + //$(document).ready(function() { + // bind 'myForm' and provide a simple callback function + $('#mediaUpload').submit(function() { + var options = { + success: function() { + $('.popup .content').load('<?php echo $vars['url'] . 'pg/embed/media'; ?>?internalname=<?php echo $vars['internalname']; ?>'); + } + }; + $(this).ajaxSubmit(options); + return false; + }); + //}); + </script> + +<?php + + } + +?> diff --git a/mod/embed/views/default/group/default/embed.php b/mod/embed/views/default/group/default/embed.php new file mode 100644 index 000000000..c5bf905a0 --- /dev/null +++ b/mod/embed/views/default/group/default/embed.php @@ -0,0 +1,9 @@ +<?php + + if ($vars['entity'] instanceof ElggGroup) { + + echo '<a href="'. $vars['entity']->getURL() .'">' . $vars['entity']->title . '</a>'; + + } + +?>
\ No newline at end of file diff --git a/mod/embed/views/default/object/default/embed.php b/mod/embed/views/default/object/default/embed.php new file mode 100644 index 000000000..c97dbd48a --- /dev/null +++ b/mod/embed/views/default/object/default/embed.php @@ -0,0 +1,9 @@ +<?php + + if ($vars['entity'] instanceof ElggObject) { + + echo '<a href="'. $vars['entity']->getURL() .'">' . $vars['entity']->title . '</a>'; + + } + +?>
\ No newline at end of file diff --git a/mod/embed/views/default/object/file/embed.php b/mod/embed/views/default/object/file/embed.php new file mode 100644 index 000000000..01f3904ac --- /dev/null +++ b/mod/embed/views/default/object/file/embed.php @@ -0,0 +1,17 @@ +<?php + + $mime = $vars['entity']->mimetype; + + if (elgg_view_exists('file/specialcontent/' . $mime)) { + $content = elgg_view('file/specialcontent/' . $mime, $vars); + } else if (elgg_view_exists("file/specialcontent/" . substr($mime,0,strpos($mime,'/')) . "/default")) { + $content = elgg_view("file/specialcontent/" . substr($mime,0,strpos($mime,'/')) . "/default", $vars); + } + + if (empty($content) || substr_count(strtolower($content),'<embed') || substr_count(strtolower($content),'<object') || substr_count(strtolower($content),'<script')) { + echo elgg_view('object/default/embed',$vars); + } else { + echo $content; + } + +?>
\ No newline at end of file diff --git a/mod/embed/views/default/object/file/embedlist.php b/mod/embed/views/default/object/file/embedlist.php new file mode 100644 index 000000000..71e84f265 --- /dev/null +++ b/mod/embed/views/default/object/file/embedlist.php @@ -0,0 +1,20 @@ +<?php + + $file = $vars['entity']; + $friendlytime = friendly_time($vars['entity']->time_created); + + $info = "<p> <a href=\"{$file->getURL()}\">{$file->title}</a></p>"; + $info .= "<p class=\"owner_timestamp\">{$friendlytime}"; + $icon = "<a href=\"{$file->getURL()}\">" . elgg_view("file/icon", array("mimetype" => $file->mimetype, 'thumbnail' => $file->thumbnail, 'file_guid' => $file->guid, 'size' => 'small')) . "</a>"; + +?> +<div id="embedFile<?php echo $file->guid; ?>"> + <div class="search_listing"> + <div class="search_listing_icon"> + <?php echo $icon; ?> + </div> + <div class="search_listing_info"> + <?php echo $info; ?> + </div> + </div> +</div> diff --git a/mod/embed/views/default/site/default/embed.php b/mod/embed/views/default/site/default/embed.php new file mode 100644 index 000000000..2d0c52214 --- /dev/null +++ b/mod/embed/views/default/site/default/embed.php @@ -0,0 +1,9 @@ +<?php + + if ($vars['entity'] instanceof ElggSite) { + + echo '<a href="'. $vars['entity']->getURL() .'">' . $vars['entity']->name . '</a>'; + + } + +?>
\ No newline at end of file diff --git a/mod/embed/views/default/user/default/embed.php b/mod/embed/views/default/user/default/embed.php new file mode 100644 index 000000000..1c3dae072 --- /dev/null +++ b/mod/embed/views/default/user/default/embed.php @@ -0,0 +1,9 @@ +<?php + + if ($vars['entity'] instanceof ElggUser) { + + echo '<a href="'. $vars['entity']->getURL() .'">' . $vars['entity']->name . '</a>'; + + } + +?>
\ No newline at end of file |