1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 17:59:21 +02:00
ampache/lib/class/ajax.class.php
Paul Arthur ef4d366060 Cosmetics: death to tabs
The refactoring I've been doing has reminded me of my strong preference
for spaces, and I feel inclined to impose my will on the tree.
2013-01-26 03:38:46 -05:00

214 lines
5.6 KiB
PHP

<?php
/* vim:set softtabstop=4 shiftwidth=4 expandtab: */
/**
*
* LICENSE: GNU General Public License, version 2 (GPLv2)
* Copyright 2001 - 2013 Ampache.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License v2
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
*/
/**
* Ajax class
*
* This class is specifically for setting up/printing out ajax related
* elements onto a page. It takes care of the observing and all that
* raz-a-ma-taz.
*
*/
class Ajax {
private static $include_override;
/**
* constructor
* This is what is called when the class is loaded
*/
public function __construct() {
// Rien a faire
} // constructor
/**
* observe
* This returns a string with the correct and full ajax 'observe' stuff
* from prototype
*/
public static function observe($source,$method,$action,$post='') {
$non_quoted = array('document','window');
if (in_array($source,$non_quoted)) {
$source_txt = $source;
}
else {
$source_txt = "'$source'";
}
// If it's a post then we need to stop events
if ($post) {
$action = 'Event.stop(e); ' . $action;
}
$observe = "<script type=\"text/javascript\">";
$observe .= "Event.observe($source_txt,'$method',function(e){" . $action . ";});";
$observe .= "</script>";
return $observe;
} // observe
/**
* url
* This takes a string and makes an URL
*/
public static function url($action) {
return Config::get('ajax_url') . $action;
}
/**
* action
* This takes the action, the source and the post (if passed) and
* generates the full ajax link
*/
public static function action($action,$source,$post='') {
$url = self::url($action);
$non_quoted = array('document','window');
if (in_array($source,$non_quoted)) {
$source_txt = $source;
}
else {
$source_txt = "'$source'";
}
if ($post) {
$ajax_string = "ajaxPost('$url','$post',$source_txt)";
}
else {
$ajax_string = "ajaxPut('$url',$source_txt)";
}
return $ajax_string;
} // action
/**
* button
* This prints out an img of the specified icon with the specified alt
* text and then sets up the required ajax for it.
*/
public static function button($action,$icon,$alt,$source='',$post='',$class='') {
// Get the correct action
$ajax_string = self::action($action,$source,$post);
// If they passed a span class
if ($class) {
$class = ' class="' . $class . '"';
}
$string = UI::get_icon($icon,$alt);
// Generate an <a> so that it's more compliant with older
// browsers (ie :hover actions) and also to unify linkbuttons
// (w/o ajax) display
$string = "<a href=\"javascript:void(0);\" id=\"$source\" $class>".$string."</a>\n";
$string .= self::observe($source,'click',$ajax_string);
return $string;
} // button
/**
* text
* This prints out the specified text as a link and sets up the required
* ajax for the link so it works correctly
*/
public static function text($action,$text,$source,$post='',$class='') {
// Format the string we wanna use
$ajax_string = self::action($action,$source,$post);
// If they passed a span class
if ($class) {
$class = ' class="' . $class . '"';
}
// If we pass a source put it in the ID
$string = "<a href=\"javascript:void(0);\" id=\"$source\" $class>$text</a>\n";
$string .= self::observe($source,'click',$ajax_string);
return $string;
} // text
/**
* run
* This runs the specified action no questions asked
*/
public static function run($action) {
echo "<script type=\"text/javascript\"><!--\n";
echo "$action";
echo "\n--></script>";
} // run
/**
* set_include_override
* This sets the including div override, used only one place. Kind of a
* hack.
*/
public static function set_include_override($value) {
self::$include_override = make_bool($value);
} // set_include_override
/**
* start_container
* This checks to see if we're AJAXin'. If we aren't then it echoes out
* the html needed to start a container that can be replaced by Ajax.
*/
public static function start_container($name) {
if (defined('AJAX_INCLUDE') && !self::$include_override) { return true; }
echo '<div id="' . scrub_out($name) . '">';
} // start_container
/**
* end_container
* This ends the container if we're not doing the AJAX thing
*/
public static function end_container() {
if (defined('AJAX_INCLUDE') && !self::$include_override) { return true; }
echo "</div>";
self::$include_override = false;
} // end_container
} // end Ajax class
?>