Current File : /home/pacjaorg/.trash/administrator/components/com_uniterevolution2/js/admin_old.js |
var UniteAdminRev = new function(){
var t = this;
var errorMessageID = null;
var successMessageID = null;
var ajaxLoaderID = null;
var ajaxHideButtonID = null;
/**
* debug html on the top of the page (from the master view)
*/
t.debug = function(html){
jQuery("#div_debug").show().html(html);
}
/**
* output data to console
*/
t.trace = function(data,clear){
if(clear && clear == true)
console.clear();
console.log(data);
}
/**
* show error message
*/
t.showErrorMessage = function(message){
var html = "<div class='error_message_box' id='system-message-error'>"+message+"</div>";
jQuery("#system-message-container").html(html);
showAjaxButton();
}
/**
* escape html, turn html to a string
*/
t.htmlspecialchars = function(string){
return string
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
/**
* strip html tags
*/
t.stripTags = function(input, allowed) {
allowed = (((allowed || "") + "").toLowerCase().match(/<[a-z][a-z0-9]*>/g) || []).join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi;
var commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return input.replace(commentsAndPhpTags, '').replace(tags, function ($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
/**
* hide error message
*/
var hideErrorMessage = function(){
jQuery("#system-message-container").html("");
}
/**
* set success message id
*/
t.setSuccessMessageID = function(id){
successMessageID = id;
}
/**
* set success message id
*/
t.setErrorMessageID = function(id){
errorMessageID = id;
}
/**
* hide success message and show ajax button
*/
t.hideSuccessMessageTimeout = function(){
jQuery("#"+successMessageID).hide();
showAjaxButton();
}
/**
* show system message
*/
t.showSystemMessage = function(message){
var html = "<div class='success_message_box' id='system-message-success'>"+message+"</div>";
jQuery("#system-message-container").html(html);
setTimeout("jQuery('#system-message-success').hide('slow')",3000);
}
/**
* how success message
*/
var showSuccessMessage = function(message){
if(successMessageID){ //show custom message
jQuery("#"+successMessageID).show();
if(message && message != "")
jQuery("#"+successMessageID).html(message);
setTimeout("UniteAdminRev.hideSuccessMessageTimeout()",500);
}else{ //show system message
var html = "<div class='success_message_box' id='system-message-success'>"+message+"</div>";
jQuery("#system-message-container").html(html);
//hide the message delay
if(jQuery('#system-message-success').length)
setTimeout("jQuery('#system-message-success').hide('slow')",3000);
showAjaxButton();
}
}
/**
* hide system message with delay
*/
t.hideSystemMessageDelay = function(){
if(jQuery('#system-message').length)
setTimeout("jQuery('#system-message').hide('slow')",1000);
}
/**
* set ajax loader id that will be shown, and hidden on ajax request
* this loader will be shown only once, and then need to be sent again.
*/
this.setAjaxLoaderID = function(id){
ajaxLoaderID = id;
}
/**
* show loader on ajax actions
*/
var showAjaxLoader = function(){
if(ajaxLoaderID)
jQuery("#"+ajaxLoaderID).show();
}
/**
* hide and remove ajax loader. next time has to be set again before "ajaxRequest" function.
*/
var hideAjaxLoader = function(){
if(ajaxLoaderID){
jQuery("#"+ajaxLoaderID).hide();
ajaxLoaderID = null;
}
}
/**
* set button to hide / show on ajax operations.
*/
this.setAjaxHideButtonID = function(buttonID){
ajaxHideButtonID = buttonID;
}
/**
* if exist ajax button to hide, hide it.
*/
var hideAjaxButton = function(){
if(ajaxHideButtonID)
jQuery("#"+ajaxHideButtonID).hide();
}
/**
* if exist ajax button, show it, and remove the button id.
*/
var showAjaxButton = function(){
if(ajaxHideButtonID){
jQuery("#"+ajaxHideButtonID).show();
ajaxHideButtonID = null;
}
}
/**
* Ajax request function. call wp ajax, if error - print error message.
* if success, call "success function"
*/
this.ajaxRequest = function(action,data,successFunction){
var objData = {
action:action,
client_action:action,
data:data
}
hideErrorMessage();
showAjaxLoader();
hideAjaxButton();
jQuery.ajax({
type:"post",
url:g_urlAjax,
dataType: 'json',
data:objData,
success:function(response){
hideAjaxLoader();
if(!response){
t.showErrorMessage("Empty ajax response!");
return(false);
}
if(response == -1){
t.showErrorMessage("ajax error!!!");
return(false);
}
if(response == 0){
t.showErrorMessage("ajax error, action: <b>"+action+"</b> not found");
return(false);
}
if(response.success == undefined){
t.showErrorMessage("The 'success' param is a must!");
return(false);
}
if(response.success == false){
t.showErrorMessage(response.message);
return(false);
}
//success actions:
//run a success event function
if(typeof successFunction == "function"){
successFunction(response);
}
if(successMessageID)
showSuccessMessage(response.message);
else
showAjaxButton();
if(response.is_redirect)
location.href=response.redirect_url;
},
error:function(jqXHR, textStatus, errorThrown){
hideAjaxLoader();
if(textStatus == "parsererror")
t.debug(jqXHR.responseText);
t.showErrorMessage("Ajax Error!!! " + textStatus);
}
});
}//ajaxrequest
/**
* load css file on the fly
* replace current item if exists
*/
this.loadCssFile = function(urlCssFile,replaceID){
var rand = Math.floor((Math.random()*100000)+1);
urlCssFile += "?rand="+rand;
if(replaceID)
jQuery("#"+replaceID).remove();
jQuery("head").append("<link>");
var css = jQuery("head").children(":last");
css.attr({
rel: "stylesheet",
type: "text/css",
href: urlCssFile
});
//replace current element
if(replaceID)
css.attr({id:replaceID});
}
/**
* on arrow change setting event. Changes arrow image
*/
this.onArrowsChange = function(data){
var settingID = data.settingID;
var urlImage = data.url_right;
var arrowName = data.arrowName;
jQuery("#"+settingID).val(arrowName);
jQuery("#"+settingID+"-img").prop({"src":urlImage,"title":arrowName});
}
/**
* hide form field
*/
this.hideFormField = function(field){
jQuery("#"+field).hide();
jQuery("#"+field+"-lbl").hide();
jQuery("#"+field+"-btn").hide();
}
this.showFormField = function(field){
jQuery("#"+field).show().removeClass("hidden");
jQuery("#"+field+"-lbl").show().removeClass("hidden");
}
/**
* upen "add image" dialog
*/
t.openAddImageDialog = function(title,onInsert){
//clear field (from master view)
jQuery("#field_image_dialog_choose").val("");
var url = "index.php?option=com_media&view=images&tmpl=component&author=&fieldid=field_image_dialog_choose";
var options = {};
options.handler = "iframe";
options.size = {x:800,y:500};
var obj = SqueezeBox.open(url,options);
obj.addEvent('onClose',function(){
var urlImage = jQuery("#field_image_dialog_choose").val();
if(urlImage != "" && urlImage != undefined){
urlImage = g_urlBase + urlImage;
onInsert(urlImage);
}
});
}
/**
* set html to youtube dialog
* if empty data - clear the dialog
*/
var setYoutubeDialogHtml = function(data){
//if empty data - clear the dialog
if(!data){
jQuery("#video_content").html("");
return(false);
}
var thumb = data.thumb_medium;
var html = '<div class="video-content-title">'+data.title+'</div>';
html += '<img src="'+thumb.url+'" width="'+thumb.width+'" height="'+thumb.height+'" alt="thumbnail">';
html += '<div class="video-content-description">'+data.desc_small+'</div>';
jQuery("#video_content").html(html);
}
/**
* youtube callback script, set and store youtube data, and add it to dialog
*/
t.onYoutubeCallback = function(obj){
jQuery("#youtube_loader").hide();
var desc_small_size = 200;
//prepare data
var entry = obj.entry;
var data = {};
data.id = jQuery("#youtube_id").val();
data.video_type = "youtube";
data.title = entry.title.$t;
data.author = entry.author[0].name.$t;
data.link = entry.link[0].href;
data.description = entry.media$group.media$description.$t;
data.desc_small = data.description;
if(data.description.length > desc_small_size)
data.desc_small = data.description.slice(0,desc_small_size)+"...";
var thumbnails = entry.media$group.media$thumbnail;
data.thumb_small = {url:thumbnails[0].url,width:thumbnails[0].width,height:thumbnails[0].height};
data.thumb_medium = {url:thumbnails[1].url,width:thumbnails[1].width,height:thumbnails[1].height};
data.thumb_big = {url:thumbnails[2].url,width:thumbnails[2].width,height:thumbnails[2].height};
//set html in dialog
setYoutubeDialogHtml(data);
//store last video data
lastVideoData = data;
//show controls:
jQuery("#video_hidden_controls").show();
}
/**
* vimeo callback script, set and store vimeo data, and add it to dialog
*/
t.onVimeoCallback = function(obj){
jQuery("#vimeo_loader").hide();
var desc_small_size = 200;
obj = obj[0];
var data = {};
data.video_type = "vimeo";
data.id = obj.id;
data.title = obj.title;
data.link = obj.url;
data.author = obj.user_name;
data.description = obj.description;
if(data.description.length > desc_small_size)
data.desc_small = data.description.slice(0,desc_small_size)+"...";
data.thumb_large = {url:obj.thumbnail_large,width:640,height:360};
data.thumb_medium = {url:obj.thumbnail_medium,width:200,height:150};
data.thumb_small = {url:obj.thumbnail_small,width:100,height:75};
//set html in dialog
setYoutubeDialogHtml(data);
//store last video data
lastVideoData = data;
//show controls:
jQuery("#video_hidden_controls").show();
}
/**
* show error message on the dialog
*/
t.videoDialogOnError = function(){
//if ok, don't do nothing
if(jQuery("#video_hidden_controls").is(":visible"))
return(false);
//if error - show message
jQuery("#youtube_loader").hide();
var html = "<div class='video-content-error'>Video Not Found!</div>";
jQuery("#video_content").html(html);
}
/**
* open dialog for youtube or vimeo import , add / update
*/
t.openVideoDialog = function(callback,objCurrentVideoData){
lastVideoCallback = callback;
var dialogVideo = jQuery("#dialog_video");
//set buttons:
var buttons = {
"Close":function(){
dialogVideo.dialog("close");
}
};
//clear the dialog content
setYoutubeDialogHtml(false);
jQuery("#video_hidden_controls").hide();
jQuery("#button-video-add").text("Add This Video");
//open the dialog
dialogVideo.dialog({
buttons:buttons,
minWidth:700,
minHeight:400,
modal:true
});
//if update dialog open:
if(objCurrentVideoData)
setVideoDialogUpdateMode(objCurrentVideoData);
}
/**
* prepare the dialog for video update
*/
var setVideoDialogUpdateMode = function(data){
//set mode and video id
if(data.video_type == "youtube"){
jQuery("#video_radio_youtube").trigger("click");
jQuery("#youtube_id").val(data.id);
}
else{
jQuery("#video_radio_vimeo").trigger("click");
jQuery("#vimeo_id").val(data.id);
}
//set width and height:
jQuery("#input_video_width").val(data.width);
jQuery("#input_video_height").val(data.height);
//change button text:
jQuery("#button-video-add").text("Update Video");
//search
if(data.video_type == "youtube")
jQuery("#button_youtube_search").trigger("click");
else
jQuery("#button_vimeo_search").trigger("click");
}
/**
* init video dialog buttons
*/
var initVideoDialog = function(){
//set youtube radio checked:
jQuery("#video_radio_youtube").prop("checked",true);
//set radio boxes:
jQuery("#video_radio_vimeo").click(function(){
jQuery("#video_block_youtube").hide();
jQuery("#video_block_vimeo").show();
});
jQuery("#video_radio_youtube").click(function(){
jQuery("#video_block_vimeo").hide();
jQuery("#video_block_youtube").show();
});
//set youtube search action
jQuery("#button_youtube_search").click(function(){
//init data
setYoutubeDialogHtml(false);
jQuery("#video_hidden_controls").hide();
jQuery("#youtube_loader").show();
var youtubeID = jQuery("#youtube_id").val();
youtubeID = jQuery.trim(youtubeID);
var urlAPI = "http://gdata.youtube.com/feeds/api/videos/"+youtubeID+"?v=2&alt=json-in-script&callback=UniteAdminRev.onYoutubeCallback";
jQuery.getScript(urlAPI);
//handle not found:
setTimeout("UniteAdminRev.videoDialogOnError()",2000);
});
//add the selected video to the callback function
jQuery("#button-video-add").click(function(){
if(!lastVideoData)
return(false);
lastVideoData.width = jQuery("#input_video_width").val();
lastVideoData.height = jQuery("#input_video_height").val();
if(typeof lastVideoCallback == "function")
lastVideoCallback(lastVideoData);
jQuery("#dialog_video").dialog("close");
});
//set vimeo search
jQuery("#button_vimeo_search").click(function(){
//init data
setYoutubeDialogHtml(false);
jQuery("#video_hidden_controls").hide();
jQuery("#vimeo_loader").show();
var vimeoID = jQuery("#vimeo_id").val();
vimeoID = jQuery.trim(vimeoID);
var urlAPI = 'http://www.vimeo.com/api/v2/video/' + vimeoID + '.json?callback=UniteAdminRev.onVimeoCallback';
jQuery.getScript(urlAPI);
});
}//end initVideoDialog
/**
* init footer version dialog
*/
var initeFooterVersionDialog = function(){
jQuery("#link_footer_version").click(function(){
//get the log
if(jQuery("#dialog_version_content").text() == ""){
UniteAdminRev.ajaxRequest("get_release_log","",function(response){
var data = response.data;
jQuery("#dialog_version_content").html(data);
});
}
//open dialog
jQuery("#dialog_version").dialog({
minWidth:800,
modal:true,
buttons:{"Close":function(){jQuery(this).dialog("close")}}
}
);
});
}
/**
* init every page in the project
*/
initGlobal = function(){
t.hideSystemMessageDelay();
initVideoDialog();
initeFooterVersionDialog();
}
//script for global init
jQuery(document).ready(function(){
initGlobal();
})
} //end object
//user functions:
function trace(data,clear){
UniteAdminRev.trace(data,clear);
}
function debug(data){
UniteAdminRev.debug(data);
}