1
0
mirror of https://github.com/e107inc/e107.git synced 2025-04-19 12:11:55 +02:00

Media-Manager search-filter and other fixes.

This commit is contained in:
CaMer0n 2012-08-04 04:15:41 +00:00
parent 10312f4e2a
commit 92370eb421
8 changed files with 294 additions and 110 deletions

View File

@ -40,6 +40,35 @@ if(isset($_POST['submit_cancel_show']))
include_lan(e_LANGUAGEDIR.e_LANGUAGE.'/admin/lan_'.e_PAGE);
if($_GET['action'] == 'nav' && e_AJAX_REQUEST) //XXX Doesn't work correctly inside the class for some reaosn.
{
define("e_IFRAME",true);
// require_once(e_ADMIN."auth.php");
$bbcodeMode = ($_GET['bbcode']=='img') ? 'bbcode=img' : FALSE;
if($_GET['from'])
{
$bbcodeMode .= "&from=".intval($_GET['from']);
}
$bbcodeMode .= "&nav=1";
$tag = ($bbcodeMode===false) ? false : $_GET['tagid']; // eg. news, news-thumbnail
if($_GET['search'])
{
$bbcodeMode .= "&search=".preg_replace("/[^a-z0-9]/i","",$_GET['search']);
}
echo e107::getMedia()->mediaSelect($_GET['for'],$tag,$bbcodeMode);
// require_once(e_ADMIN."footer.php");
exit;
}
$e_sub_cat = 'image';
@ -589,7 +618,15 @@ class media_admin_ui extends e_admin_ui
//FIXME TODO - clear thumbnail cache when prefs are saved/updated.
// e107::getCache()->clearAll('image');
// print_a($_GET);
if($_GET['action'] == 'nav' )
{
//echo $this->navPage();\
// $this->getResponse()->setIframeMod(); // disable header/footer menus etc.
// print_a($_GET);
}
@ -639,37 +676,9 @@ class media_admin_ui extends e_admin_ui
if($this->getQuery('iframe'))
{
/*
if($this->getQuery('bbcode'))
{
//TODO this is not really used when jquery is running.
e107::getJS()->headerInline("
// Send the generated IMG bbcode back to the textarea/window
function saveBB()
{
var add = document.getElementById('bbcode_holder').value;
var html = document.getElementById('html_holder').value;
// tinyMCE.execCommand('mceInsertContent',false,add);
tinyMCE.execCommand('mceInsertRawHTML',false,html);
tinyMCEPopup.close();
//addtext(add);
//parent.e107Widgets.DialogManagerDefault.getWindow('e-dialog').close();
return false;
}
");
}
*/
$this->getResponse()->setIframeMod(); // disable header/footer menus etc.
if(!$this->getQuery('for'))
{
$this->setPosted('media_category', "_common");
@ -699,6 +708,30 @@ class media_admin_ui extends e_admin_ui
//
}
function navPage() // no functioning correctly - see e_AJAX_REQUEST above.
{
$bbcodeMode = ($this->getQuery('bbcode')=='img') ? 'bbcode=img' : FALSE;
if($_GET['from'])
{
$bbcodeMode .= "&from=".intval($_GET['from']);
}
$bbcodeMode .= "&nav=1";
$tag = ($bbcodeMode) ? "" : $this->getQuery('tagid');
echo e107::getMedia()->mediaSelect($this->getQuery('for'),$this->getQuery('tagid'),$bbcodeMode); // eg. news, news-thumbnail
return;
}
function dialogPage() // Popup dialogPage for Image Selection.
{
$cat = $this->getQuery('for');
@ -725,6 +758,9 @@ class media_admin_ui extends e_admin_ui
echo $this->imageSelectUpload();
}
function uploadPage()
{
if(!ADMIN){ exit; } //TODO check for upload-access in perms.

View File

@ -271,10 +271,10 @@ class bb_youtube extends e_bb_base
default: // maximum 1920 x 1080 (+25)
$dim = explode(',', $dimensions, 2);
$params['w'] = (integer) varset($dim[0], 445);
if($params['w'] > 1920 || $params['w'] < 200) $params['w'] = 640;
if($params['w'] > 1920 || $params['w'] < 100) $params['w'] = 640;
$params['h'] = (integer) varset($dim[1], 364);
if($params['h'] > 1105 || $params['h'] < 137) $params['h'] = 385;
if($params['h'] > 1105 || $params['h'] < 67) $params['h'] = 385;
break;
}
@ -344,25 +344,29 @@ class bb_youtube extends e_bb_base
$class = "bbcode ".e107::getBB()->getClass('youtube'); // consistent classes across all themes.
$ret = '
<!-- Start YouTube -->
<object class="'.$class.'" width="'.$params['w'].'" height="'.$params['h'].'" >
$ret = "<!-- Start YouTube-".$dimensions."-".$yID." -->\n"; // <-- DO NOT MODIFY - used for detection by bbcode handler.
$ret .= '<object class="'.$class.'" width="'.$params['w'].'" height="'.$params['h'].'" >
<param name="movie" value="'.$url.'" />
<param name="allowFullScreen" value="'.$fscr.'" />
<param name="allowscriptaccess" value="always" />
<param name="wmode" value="transparent" />
';
// Not XHTML - but needed for compatibility.
// Not XHTML - but needed for compatibility.
$ret .= '<embed class="'.$class.'" src="'.$url.'" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="'.$fscr.'" wmode="transparent" width="'.$params['w'].'" height="'.$params['h'].'" />';
$ret .= '</object>';
$ret .= '
<!-- End YouTube -->
$ret .= "<!-- End YouTube -->"; // <-- DO NOT MODIFY.
';
return $ret;
}
// Wysiwyg representation of bbcode render.
function toWYSIWYG($code_text,$parm)
{
//eg. an image of the video thumbnail
}
}
?>

View File

@ -219,49 +219,9 @@ $(document).ready(function()
});
$(".e-nav").click(function(){ // should be run before ajax.
var src = $(this).attr("data-src");
var inc = parseInt($(this).attr("data-nav-inc"));
var dir = $(this).attr("data-nav-dir");
var tot = parseInt($(this).attr("data-nav-total"));
var val = src.match(/from=(\d+)/);
var amt = parseInt(val[1]);
var oldVal = 'from='+ amt;
var sub = amt - inc;
var add = amt + inc;
$(this).show();
if(add > tot)
{
add = amt;
}
if(sub < 0)
{
sub = 0
}
if(dir == 'down')
{
var newVal = 'from='+ sub;
}
else
{
var newVal = 'from='+ add;
}
src = src.replace(oldVal, newVal);
$(".e-nav").attr("data-src",src);
});
$(".e-shake" ).effect("shake",{times: 10, distance: 2},20);

View File

@ -420,17 +420,19 @@ $(document).ready(function()
$(id).html("<img src='"+loading+"' alt='' />");
}
if(src == null) // old way - href='myscript.php#id-to-target
if(src === null) // old way - href='myscript.php#id-to-target
{
var tmp = src.split('#');
id = tmp[1];
src = tmp[0];
}
// var effect = $(this).attr("data-effect");
// alert(src);
$(id).load(src,function() {
// alert(src);
// $(id).effect("slide");
//$(this).hide();
// $(this).fadeIn();
});

View File

@ -105,7 +105,7 @@ $(document).ready(function()
// $(".e-media-select").click(function () {
$(".e-media-select").live("click", function(){
// console.log(this);
var id = $(this).attr('data-id');
@ -116,6 +116,8 @@ $(document).ready(function()
var bbcode = $(this).attr('data-bbcode');
var name = $(this).attr('data-name');
//alert(target);
$(this).addClass("media-select-active");
$(this).closest("img").addClass("active");
@ -168,6 +170,138 @@ $(document).ready(function()
});
$(".e-nav").click(function(){ // should be run before ajax.
var src = $(this).attr("data-src");
var inc = parseInt($(this).attr("data-nav-inc"));
var dir = $(this).attr("data-nav-dir");
var tot = parseInt($(this).attr("data-nav-total"));
var val = src.match(/from=(\d+)/);
var amt = parseInt(val[1]);
var oldVal = 'from='+ amt;
var sub = amt - inc;
var add = amt + inc;
$(this).show();
if(add > tot)
{
add = amt;
}
if(sub < 0)
{
sub = 0
}
if(dir == 'down')
{
var newVal = 'from='+ sub;
}
else
{
var newVal = 'from='+ add;
}
src = src.replace(oldVal, newVal);
$(".e-nav").attr("data-src",src);
});
$(".e-media-nav").click(function(){
return mediaNav(this);
/*
var id = $(this).attr("href");
var src = $(this).attr("data-src");
var target = $(this).attr("data-target"); // support for input buttons etc.
var loading = $(this).attr('data-loading'); // image to show loading.
var search = $('#media-search').val(); // image to show loading.
if(target != null)
{
id = '#' + target;
}
if(loading != null)
{
$(id).html("<img src='"+loading+"' alt='' />");
}
if(src === null) // old way - href='myscript.php#id-to-target
{
var tmp = src.split('#');
id = tmp[1];
src = tmp[0];
}
if(search !== null)
{
src = src + '&search='+search;
}
// var effect = $(this).attr("data-effect");
// alert(src);
$(id).load(src,function() {
// alert(src);
// $(this).hide();
// $(this).SlideUp();
});
*/
});
$("#media-search").keyup(function(){
mediaNav(this);
});
function mediaNav(e)
{
var id = $(e).attr("href");
var src = $(e).attr("data-src");
var target = $(e).attr("data-target"); // support for input buttons etc.
var loading = $(e).attr('data-loading'); // image to show loading.
var search = $('#media-search').val(); // image to show loading.
if(target != null)
{
id = '#' + target;
}
if(loading != null)
{
$(id).html("<img src='"+loading+"' alt='' />");
}
if(src === null) // old way - href='myscript.php#id-to-target
{
var tmp = src.split('#');
id = tmp[1];
src = tmp[0];
}
if(search !== null)
{
src = src + '&search='+search;
}
$(id).load(src,function() {
// alert(src);
// $(this).hide();
// $(this).SlideUp();
});
}
// ----------------- Upload --------------------------------------

View File

@ -550,7 +550,11 @@ class e_bbcode
{
return $text;
}
// Youtube conversion (TinyMce)
$text = preg_replace('/<img class="youtube-([\w]*)" style="([^"]*)" src="([^"]*)" alt="([^"]*)" \/>/i',"[youtube=$1]$4[/youtube]",$text);
$text = preg_replace('/<!-- Start YouTube-([\w,]*)-([\w]*) -->.*<!-- End YouTube -->/i','[youtube=$1]$2[/youtube]',$text);
$text = preg_replace("/<a.*?href=\"(.*?)?request.php\?file=([\d]*)\".*?>(.*?)<\/a>/i","[file=$2]$3[/file]",$text);
$text = preg_replace("/<a.*?href=\"(.*?)\".*?>(.*?)<\/a>/i","[link=$1]$2[/link]",$text);

View File

@ -2754,8 +2754,11 @@ class e107
}
// This should avoid further checks - NOTE: used in js_manager.php
define('e_ADMIN_AREA', ($inAdminDir && !deftrue('USER_AREA'))); //Force USER_AREA added
if(!defined('e_ADMIN_AREA'))
{
define('e_ADMIN_AREA', ($inAdminDir && !deftrue('USER_AREA'))); //Force USER_AREA added
}
define('ADMINDIR', $ADMIN_DIRECTORY);
define('SITEURLBASE', $this->HTTP_SCHEME.'://'.$_SERVER['HTTP_HOST']);

View File

@ -263,9 +263,10 @@ class e_media
* Return the total number of Images in a particular category
*
*/
public function countImages($cat)
public function countImages($cat,$search=null)
{
$inc = array();
$inc = array();
$searchinc = array();
if(strpos($cat,"+") || !$cat)
{
@ -277,9 +278,22 @@ class e_media
$inc[] = "media_category REGEXP '(^|,)(".$cat.")(,|$)' "; // for multiple category field.
}
if($search)
{
$searchinc[] = "media_name LIKE '%".$search."%' ";
$searchinc[] = "media_description LIKE '%".$search."%' ";
$searchinc[] = "media_caption LIKE '%".$search."%' ";
$searchinc[] = "media_tags LIKE '%".$search."%' ";
}
$query = "SELECT * FROM #core_media WHERE media_userclass IN (".USERCLASS_LIST.") AND ( ".implode(" OR ",$inc)." )" ;
if($search)
{
$query .= " AND ( ".implode(" OR ",$searchinc)." ) " ;
}
return e107::getDb()->db_Select_gen($query);
}
@ -288,9 +302,10 @@ class e_media
* Return an array of Images in a particular category
* @param string $cat : category name. use + to include _common eg. 'news+'
*/
public function getImages($cat='', $from=0, $amount=null)
public function getImages($cat='', $from=0, $amount=null,$search=null)
{
$inc = array();
$inc = array();
$searchinc = array();
if(strpos($cat,"+") || !$cat)
{
@ -303,10 +318,26 @@ class e_media
$inc[] = "media_category REGEXP '(^|,)(".$cat.")(,|$)' "; // for multiple category field.
}
// TODO check the category is valid.
if($search)
{
$searchinc[] = "media_name LIKE '%".$search."%' ";
$searchinc[] = "media_description LIKE '%".$search."%' ";
$searchinc[] = "media_caption LIKE '%".$search."%' ";
$searchinc[] = "media_tags LIKE '%".$search."%' ";
}
$ret = array();
$query = "SELECT * FROM #core_media WHERE media_userclass IN (".USERCLASS_LIST.") AND ( ".implode(" OR ",$inc) ;
$query .= " ) ORDER BY media_datestamp DESC";
$query = "SELECT * FROM #core_media WHERE media_userclass IN (".USERCLASS_LIST.") AND ( ".implode(" OR ",$inc)." ) " ;
if($search)
{
$query .= " AND ( ".implode(" OR ",$searchinc)." ) " ;
}
$query .= " ORDER BY media_datestamp DESC";
if($amount)
{
@ -405,18 +436,15 @@ class e_media
parse_str($att,$option);
$cat = ($category) ? '&amp;for='.$category : "";
if(!$label) $label = ' Upload an image or file';
if($option['tagid']) $cat .= '&amp;tagid='.$option['tagid'];
if($option['bbcode']) $cat .= '&amp;bbcode=1';
if($option['bbcode']) $cat .= '&amp;bbcode='.$option['bbcode'];
$cat .= ($option['limit']) ? "&amp;limit=".$option['limit'] : "";
$cat .= ($option['frm']) ? "&amp;frm=".$option['frm'] : "";
$url = e_ADMIN_ABS."image.php?mode=main&amp;action=dialog".$cat;
$url = e_ADMIN_ABS."image.php?mode=main&amp;action=nav&amp;iframe=1".$cat;
return $url;
}
@ -431,16 +459,19 @@ class e_media
$limit = ($option['limit']) ? $option['limit'] : 20;
$newfrm = $frm + $limit;
$bbcode = ($option['bbcode']) ? $option['bbcode'] : null;
$navMode = ($option['nav']) ? TRUE : FALSE;
$search = ($option['search']) ? $option['search'] : null;
if($category !='_icon')
{
$cat = ($category) ? $category."+" : ""; // the '+' loads category '_common' as well as the chosen category.
$images = $this->getImages($cat,$frm,$limit);
$images = $this->getImages($cat,$frm,$limit,$search);
$class = "media-select-image";
$w = 120;
$h = 100;
$total = $this->countImages($cat);
$total = $this->countImages($cat,$search);
}
else // Icons
{
@ -464,14 +495,20 @@ class e_media
// $text .= "CAT=".$cat;
$dipTotal = (($frm + $limit) < $total) ? ($frm + $limit) : $total;
$text .= "<div>Filter: <input type='text' name='non-working-filter-example' value='' />";
$text .= "<input type='button' value='Go' /> "; // Manual filter, if onkeyup ajax fails for some reason.
// $text .= "<input type='button' value='&laquo;' />"; // see previous page of images.
$text .= "<a class='button e-nav e-ajax' href='#media-select-container' data-nav-total='".$total."' data-nav-dir='down' data-nav-inc='".$limit."' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&from=0 #media-select-container' >&laquo;</a>"; // see next page of images.
if($navMode === false)
{
$text .= "<div>Filter: <input type='text' id='media-search' title='Enter some text to filter the results' name='search' value='' class='e-tip e-media-nav' data-target='media-select-container' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&amp;from=0' />";
$text .= "<input type='button' value='Go' class='e-media-nav' data-target='media-select-container' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&amp;from=0' /> "; // Manual filter, if onkeyup ajax fails for some reason.
// $text .= "<input type='button' value='&laquo;' />"; // see previous page of images.
$text .= "<button title='previous page' class='button e-nav e-media-nav e-tip' data-target='media-select-container' data-nav-total='".$total."' data-nav-dir='down' data-nav-inc='".$limit."' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&amp;from=0' >&laquo;</button>"; // see next page of images.
$text .= "&nbsp;<a class='button e-nav e-ajax' href='#media-select-container' data-nav-total='".$total."' data-nav-dir='up' data-nav-inc='".$limit."' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&from=0 #media-select-container' >&raquo;</a>"; // see next page of images.
$text .= "</div>
<div id='media-select-container'>
$text .= "&nbsp;<button title='next page' class='button e-nav e-media-nav e-tip' style='text-align:center' data-target='media-select-container' data-nav-total='".$total."' data-nav-dir='up' data-nav-inc='".$limit."' data-src='".$this->mediaSelectNav($category,"tagid=".$tagid."&bbcode=".$bbcode)."&amp;from=0' >&raquo;</button>"; // see next page of images.
$text .= "</div>
<div id='media-select-container'>";
}
$text .= "
<div style='text-align:right; display:block'> Displaying ".($frm +1)."-".($dipTotal)." of ".$total." images.</div>\n";
if($bbcode == null) // e107 Media Manager - new-image mode.
@ -546,7 +583,11 @@ class e_media
$text .= "<div style='clear:both'><!-- --></div>";
$mes = e107::getMessage();
$mes->addDebug("Target: {$tagid}");
$text .= "</div>";
if($navMode === false)
{
$text .= "</div>";
}
return $text;
}