mirror of
https://github.com/Pathduck/gallery3.git
synced 2026-05-19 19:09:13 -04:00
Create the concept of an "ajax link" and use it for thumbnail rotation
and album covers in the context menu. Notes: - This requires context_menu() to have a CSS selector that refers to the <img> that we're operating on, otherwise we don't know how to find the thumbnail, etc. - Create Menu_Element_Ajax_Link which has an ajax_handler attribute that contains a snippet of JS that we're going to run when the ajax call returns. - Add $.gallery_replace_image in gallery.common.js - Add lib/gallery.ajax.js which can be used to ajaxify any link, and have ui.init.js in the themes call that on all .gAjaxLink elements.
This commit is contained in:
@@ -96,6 +96,37 @@ class Menu_Element_Link extends Menu_Element {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Menu element that provides an AJAX link.
|
||||
*/
|
||||
class Menu_Element_Ajax_Link extends Menu_Element {
|
||||
public $ajax_handler;
|
||||
|
||||
/**
|
||||
* Set the AJAX handler
|
||||
* @chainable
|
||||
*/
|
||||
public function ajax_handler($ajax_handler) {
|
||||
$this->ajax_handler = $ajax_handler;
|
||||
return $this;
|
||||
}
|
||||
|
||||
public function __toString() {
|
||||
if (isset($this->css_id) && !empty($this->css_id)) {
|
||||
$css_id = " id=\"$this->css_id\"";
|
||||
} else {
|
||||
$css_id = "";
|
||||
}
|
||||
if (isset($this->css_class) && !empty($this->css_class)) {
|
||||
$css_class = " $this->css_class";
|
||||
} else {
|
||||
$css_class = "";
|
||||
}
|
||||
return "<li><a$css_id class=\"gAjaxLink $css_class\" href=\"$this->url\" " .
|
||||
"title=\"$this->label\" ajax_handler=\"$this->ajax_handler\">$this->label</a></li>";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Menu element that provides a pop-up dialog
|
||||
*/
|
||||
@@ -132,6 +163,9 @@ class Menu_Core extends Menu_Element {
|
||||
case "link":
|
||||
return new Menu_Element_Link($type);
|
||||
|
||||
case "ajax_link":
|
||||
return new Menu_Element_Ajax_Link($type);
|
||||
|
||||
case "dialog":
|
||||
return new Menu_Element_Dialog($type);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user