remove broken tagger extension
This commit is contained in:
parent
866b77ab19
commit
fd359fb08c
Binary file not shown.
Before Width: | Height: | Size: 183 B |
Binary file not shown.
Before Width: | Height: | Size: 227 B |
Binary file not shown.
Before Width: | Height: | Size: 170 B |
Binary file not shown.
Before Width: | Height: | Size: 198 B |
Binary file not shown.
@ -1,12 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
class TaggerInfo extends ExtensionInfo
|
|
||||||
{
|
|
||||||
public const KEY = "tagger";
|
|
||||||
|
|
||||||
public $key = self::KEY;
|
|
||||||
public $name = "Tagger";
|
|
||||||
public $authors = ["Artanis (Erik Youngren)"=>"artanis.00@gmail.com"];
|
|
||||||
public $dependencies = [TaggerXMLInfo::KEY];
|
|
||||||
public $description = "Advanced Tagging v2";
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
|
|
||||||
class Tagger extends Extension
|
|
||||||
{
|
|
||||||
/** @var TaggerTheme */
|
|
||||||
protected $theme;
|
|
||||||
|
|
||||||
public function onDisplayingImage(DisplayingImageEvent $event)
|
|
||||||
{
|
|
||||||
global $page, $user;
|
|
||||||
|
|
||||||
if ($user->can(Permissions::EDIT_IMAGE_TAG) && ($event->image->is_locked() || $user->can(Permissions::EDIT_IMAGE_LOCK))) {
|
|
||||||
$this->theme->build_tagger($page, $event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function onSetupBuilding(SetupBuildingEvent $event)
|
|
||||||
{
|
|
||||||
$sb = new SetupBlock("Tagger");
|
|
||||||
$sb->add_int_option("ext_tagger_search_delay", "Delay queries by ");
|
|
||||||
$sb->add_label(" milliseconds.");
|
|
||||||
$sb->add_label("<br/>Limit queries returning more than ");
|
|
||||||
$sb->add_int_option("ext_tagger_tag_max");
|
|
||||||
$sb->add_label(" tags to ");
|
|
||||||
$sb->add_int_option("ext_tagger_limit");
|
|
||||||
$event->panel->add_block($sb);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,221 +0,0 @@
|
|||||||
/*jshint forin:false, nonew:true, undef:true, strict:false, browser:true, jquery:true */
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\
|
|
||||||
* Tagger - Advanced Tagging v2 *
|
|
||||||
* Author: Artanis (Erik Youngren <artanis.00@gmail.com>) *
|
|
||||||
* Do not remove this notice. *
|
|
||||||
\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
function byId(id) {
|
|
||||||
return document.getElementById(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
var Tagger = {
|
|
||||||
initialize : function (image_id) {
|
|
||||||
// object navigation
|
|
||||||
this.tag.parent = this;
|
|
||||||
this.position.parent = this;
|
|
||||||
// components
|
|
||||||
this.editor.container = byId('tagger_parent');
|
|
||||||
this.editor.titlebar = byId('tagger_titlebar');
|
|
||||||
this.editor.toolbar = byId('tagger_toolbar');
|
|
||||||
//this.editor.menu = byId('tagger_p-menu');
|
|
||||||
this.editor.body = byId('tagger_body');
|
|
||||||
this.editor.tags = byId('tagger_tags');
|
|
||||||
this.editor.form = this.editor.tags.parentNode;
|
|
||||||
this.editor.statusbar = byId('tagger_statusbar');
|
|
||||||
// initial data
|
|
||||||
this.tag.image = image_id;
|
|
||||||
this.tag.query = config.make_link("tagger/tags");
|
|
||||||
this.tag.list = null;
|
|
||||||
this.tag.suggest = null;
|
|
||||||
this.tag.image_tags();
|
|
||||||
|
|
||||||
// reveal
|
|
||||||
this.editor.container.style.display = "";
|
|
||||||
|
|
||||||
// dragging
|
|
||||||
DragHandler.attach(this.editor.titlebar);
|
|
||||||
|
|
||||||
// positioning
|
|
||||||
this.position.load();
|
|
||||||
|
|
||||||
// events
|
|
||||||
window.onunload = function () { Tagger.position.save(); };
|
|
||||||
},
|
|
||||||
|
|
||||||
alert : function (type,text,timeout) {
|
|
||||||
var id = "tagger_alert-"+type;
|
|
||||||
var t_alert = byId(id);
|
|
||||||
if (t_alert) {
|
|
||||||
if(text === false) {
|
|
||||||
// remove
|
|
||||||
t_alert.parentNode.removeChild(t_alert);
|
|
||||||
} else {
|
|
||||||
// update
|
|
||||||
t_alert.innerHTML = text;
|
|
||||||
}
|
|
||||||
} else if (text) {
|
|
||||||
// create
|
|
||||||
t_alert = document.createElement("div");
|
|
||||||
t_alert.setAttribute("id",id);
|
|
||||||
t_alert.appendChild(document.createTextNode(text));
|
|
||||||
this.editor.statusbar.appendChild(t_alert);
|
|
||||||
if(timeout>1) {
|
|
||||||
console.log("Tagger.alert('"+type+"',false,0)");
|
|
||||||
setTimeout("Tagger.alert('"+type+"',false,0)",timeout);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
editor : {},
|
|
||||||
|
|
||||||
tag : {
|
|
||||||
submit : function () {
|
|
||||||
var l = this.list.childNodes.length;
|
|
||||||
var tags = [];
|
|
||||||
for(var i=0; i<l; i++) {
|
|
||||||
var s_tag = this.list.childNodes[i].firstChild.data;
|
|
||||||
tags.push(s_tag);
|
|
||||||
}
|
|
||||||
tags = tags.join(" ");
|
|
||||||
this.parent.editor.tags.value = tags;
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
search : function(s,ms) {
|
|
||||||
clearTimeout(Tagger.tag.timer);
|
|
||||||
Tagger.tag.timer = setTimeout(
|
|
||||||
"Tagger.tag.ajax('"+Tagger.tag.query+"?s="+s+"',Tagger.tag.receive)",
|
|
||||||
ms);
|
|
||||||
},
|
|
||||||
|
|
||||||
receive : function (xml) {
|
|
||||||
if(xml) {
|
|
||||||
Tagger.tag.suggest = document.importNode(
|
|
||||||
xml.responseXML.getElementsByTagName("list")[0],true);
|
|
||||||
Tagger.tag.publish(Tagger.tag.suggest,byId("tagger_p-search"));
|
|
||||||
}
|
|
||||||
if(Tagger.tag.suggest.getAttribute("max")) {
|
|
||||||
var rows = Tagger.tag.suggest.getAttribute("rows");
|
|
||||||
var max = Tagger.tag.suggest.getAttribute("max");
|
|
||||||
Tagger.alert("maxout","Showing "+rows+" of "+max+" tags",0);
|
|
||||||
} else {
|
|
||||||
Tagger.alert("maxout",false);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
image_tags : function(xml) {
|
|
||||||
if (!xml) {
|
|
||||||
this.ajax(this.query+"/"+this.image,this.image_tags);
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
Tagger.tag.list = document.importNode(
|
|
||||||
xml.responseXML.getElementsByTagName("list")[0],true);
|
|
||||||
Tagger.tag.publish(Tagger.tag.list,byId("tagger_p-applied"));
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
publish : function (list, page) {
|
|
||||||
list.setAttribute("xmlns","http://www.w3.org/1999/xhtml");
|
|
||||||
|
|
||||||
var l = list.childNodes.length;
|
|
||||||
for(var i=0; i<l; i++) {
|
|
||||||
var tag = list.childNodes[i];
|
|
||||||
tag.onclick = function () {
|
|
||||||
Tagger.tag.toggle(this);
|
|
||||||
byId("tagger_filter").select();
|
|
||||||
};
|
|
||||||
tag.setAttribute("title",tag.getAttribute("count")+" uses");
|
|
||||||
}
|
|
||||||
|
|
||||||
page.innerHTML = "";
|
|
||||||
page.appendChild(list);
|
|
||||||
},
|
|
||||||
|
|
||||||
create : function (tag_name) {
|
|
||||||
if(tag_name.length > 0) {
|
|
||||||
var tag = document.createElement("tag");
|
|
||||||
tag.setAttribute("count","0");
|
|
||||||
tag.setAttribute("id","newTag_"+tag_name);
|
|
||||||
tag.setAttribute("title","New - 0 uses");
|
|
||||||
tag.onclick = function() {
|
|
||||||
Tagger.tag.toggle(this);
|
|
||||||
};
|
|
||||||
tag.appendChild(document.createTextNode(tag_name));
|
|
||||||
Tagger.tag.list.appendChild(tag);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
toggle : function (tag) {
|
|
||||||
if(tag.parentNode == this.list) {
|
|
||||||
this.list.removeChild(tag);
|
|
||||||
} else {
|
|
||||||
this.list.appendChild(tag);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
ajax : function (url, callback) {
|
|
||||||
var http = new XMLHttpRequest();
|
|
||||||
http.open("GET",url,true);
|
|
||||||
http.onreadystatechange = function () {
|
|
||||||
if(http.readyState == 4) { callback(http); }
|
|
||||||
};
|
|
||||||
http.send(null);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
position : {
|
|
||||||
set : function (x,y) {
|
|
||||||
if (!x || !y) {
|
|
||||||
this.parent.editor.container.style.top = "25px";
|
|
||||||
this.parent.editor.container.style.left = "";
|
|
||||||
this.parent.editor.container.style.right = "25px";
|
|
||||||
this.parent.editor.container.style.bottom = "";
|
|
||||||
|
|
||||||
var xy = this.get();
|
|
||||||
x = xy[0];
|
|
||||||
y = xy[1];
|
|
||||||
}
|
|
||||||
this.parent.editor.container.style.top = y+"px";
|
|
||||||
this.parent.editor.container.style.left = x+"px";
|
|
||||||
this.parent.editor.container.style.right = "";
|
|
||||||
this.parent.editor.container.style.bottom = "";
|
|
||||||
},
|
|
||||||
|
|
||||||
get : function () {
|
|
||||||
// https://www.quirksmode.org/js/findpos.html
|
|
||||||
var left = 0;
|
|
||||||
var top = 0;
|
|
||||||
var obj = this.parent.editor.container;
|
|
||||||
if(obj.offsetParent) {
|
|
||||||
left = obj.offsetLeft;
|
|
||||||
top = obj.offsetTop;
|
|
||||||
while (obj = obj.offsetParent) {
|
|
||||||
left += obj.offsetLeft;
|
|
||||||
top += obj.offsetTop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return [left,top];
|
|
||||||
},
|
|
||||||
|
|
||||||
save : function (x,y) {
|
|
||||||
if (!x || !y) {
|
|
||||||
var xy = this.get();
|
|
||||||
x = xy[0];
|
|
||||||
y = xy[1];
|
|
||||||
}
|
|
||||||
Cookies.set(config.title+"_tagger-position", x+" "+y, {expires: 14});
|
|
||||||
},
|
|
||||||
|
|
||||||
load : function () {
|
|
||||||
var p = Cookies.get(config.title+"_tagger-position");
|
|
||||||
if(p) {
|
|
||||||
var xy = p.split(" ");
|
|
||||||
this.set(xy[0],xy[1]);
|
|
||||||
} else {
|
|
||||||
this.set();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,103 +0,0 @@
|
|||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* Tagger - Advanced Tagging v2 *
|
|
||||||
* Author: Artanis (Erik Youngren <artanis.00@gmail.com>) *
|
|
||||||
* Do not remove this notice. *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
#tagger_parent {
|
|
||||||
text-align:left;
|
|
||||||
position:fixed;
|
|
||||||
max-width:300px;
|
|
||||||
|
|
||||||
}
|
|
||||||
#tagger_parent * {
|
|
||||||
background-color:#EEE;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_titlebar {
|
|
||||||
background-color:#ddd;
|
|
||||||
border:2px solid;
|
|
||||||
cursor:move;
|
|
||||||
font-weight:bold;
|
|
||||||
-moz-border-radius:5px 5px 0 0;
|
|
||||||
padding:.25em;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_toolbar, #tagger_body {
|
|
||||||
padding:2px 2px 0 2px;
|
|
||||||
border-style:solid;
|
|
||||||
border-width: 0 2px 0 2px;
|
|
||||||
}
|
|
||||||
#tagger_body {
|
|
||||||
max-height:175px;
|
|
||||||
overflow-x:hidden;
|
|
||||||
overflow-y:auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_statusbar {
|
|
||||||
background-color:#ddd;
|
|
||||||
border:2px solid;
|
|
||||||
font-weight: bold;
|
|
||||||
min-height:16px;
|
|
||||||
-moz-border-radius:0 0 5px 5px;
|
|
||||||
padding:.25em;
|
|
||||||
} #tagger_statusbar * { background-color:#ddd; }
|
|
||||||
|
|
||||||
#tagger_body div {
|
|
||||||
padding-top:2px;
|
|
||||||
margin-top:2px;
|
|
||||||
border-top:1px solid;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Tagger Styling
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
#tagger_parent form {
|
|
||||||
display:inline;
|
|
||||||
}
|
|
||||||
#tagger_parent input {
|
|
||||||
width:auto;
|
|
||||||
}
|
|
||||||
#tagger_parent input[type=text] {
|
|
||||||
background-color:white;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Custom Element Base Styles
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
#tagger_parent list {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#tagger_parent tag {
|
|
||||||
font-size:1.25em;
|
|
||||||
display:block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_parent list[id=image] tag:before {
|
|
||||||
content:url('./images/active.png');
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_parent list[id=search] tag:before {
|
|
||||||
content:url('./images/inactive.png');
|
|
||||||
}
|
|
||||||
/* Hovering */
|
|
||||||
#tagger_parent tag:hover {
|
|
||||||
cursor:pointer;
|
|
||||||
background-color:#ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*#tagger_parent list[id=image] tag:hover {
|
|
||||||
background-color:#faa;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_parent list[id=search] tag:hover {
|
|
||||||
background-color:#afa;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
#tagger_parent list[id=image] tag:hover:before {
|
|
||||||
content:url('./images/rem-tag.png');
|
|
||||||
}
|
|
||||||
|
|
||||||
#tagger_parent list[id=search] tag:hover:before {
|
|
||||||
content:url('./images/add-tag.png');
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
<?php declare(strict_types=1);
|
|
||||||
use function MicroHTML\DIV;
|
|
||||||
use function MicroHTML\FORM;
|
|
||||||
use function MicroHTML\INPUT;
|
|
||||||
|
|
||||||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
||||||
* Tagger - Advanced Tagging v2 *
|
|
||||||
* Author: Artanis (Erik Youngren <artanis.00@gmail.com>) *
|
|
||||||
* Do not remove this notice. *
|
|
||||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
||||||
|
|
||||||
class TaggerTheme extends Themelet
|
|
||||||
{
|
|
||||||
public function build_tagger(Page $page, DisplayingImageEvent $event)
|
|
||||||
{
|
|
||||||
// Initialization code
|
|
||||||
$base_href = get_base_href();
|
|
||||||
// TODO: AJAX test and fallback.
|
|
||||||
|
|
||||||
$page->add_html_header("<script src='$base_href/ext/tagger/webtoolkit.drag.js' type='text/javascript'></script>");
|
|
||||||
$page->add_block(new Block(
|
|
||||||
null,
|
|
||||||
"<script type='text/javascript'>
|
|
||||||
$( document ).ready(function() {
|
|
||||||
Tagger.initialize(".$event->get_image()->id.");
|
|
||||||
});
|
|
||||||
</script>",
|
|
||||||
"main",
|
|
||||||
1000
|
|
||||||
));
|
|
||||||
|
|
||||||
// Tagger block
|
|
||||||
$page->add_block(new Block(
|
|
||||||
null,
|
|
||||||
(string)$this->html($event->get_image()),
|
|
||||||
"main"
|
|
||||||
));
|
|
||||||
}
|
|
||||||
private function html(Image $image)
|
|
||||||
{
|
|
||||||
global $config;
|
|
||||||
$h_query = isset($_GET['search'])? $h_query= "search=".url_escape($_GET['search']) : "";
|
|
||||||
|
|
||||||
$delay = $config->get_string("ext_tagger_search_delay", "250");
|
|
||||||
|
|
||||||
// TODO: option for initial Tagger window placement.
|
|
||||||
return DIV(
|
|
||||||
["id"=>"tagger_parent", "style"=>"display:none; top:25px; right:25px;"],
|
|
||||||
DIV(["id"=>"tagger_titlebar"], "Tagger"),
|
|
||||||
DIV(
|
|
||||||
["id"=>"tagger_toolbar"],
|
|
||||||
INPUT(["type"=>"text", "value"=>"", "id"=>"tagger_filter", "onkeyup"=>"Tagger.tag.search(this.value, $delay);"]),
|
|
||||||
INPUT(["type"=>"button", "value">"Add", "onclick"=>"Tagger.tag.create(byId('tagger_filter').value);"]),
|
|
||||||
FORM(
|
|
||||||
["action"=>make_link("tag_edit/set"), "method"=>"POST", "onsubmit"=>"Tagger.tag.submit();"],
|
|
||||||
INPUT(["type"=>"hidden", "name"=>"image_id", "value"=>$image->id, "id"=>"image_id"]),
|
|
||||||
INPUT(["type"=>"hidden", "name"=>"query", "value"=>$h_query, "id"=>""]),
|
|
||||||
INPUT(["type"=>"hidden", "name"=>"source", "value"=>$image->source, "id"=>""]),
|
|
||||||
INPUT(["type"=>"hidden", "name"=>"tags", "value"=>"", "id"=>"tagger_tags"]),
|
|
||||||
INPUT(["type"=>"", "value"=>"Set"]),
|
|
||||||
),
|
|
||||||
# UL(["id"=>"tagger_p-menu"]),
|
|
||||||
# BR(["style"=>"clear:both;"]),
|
|
||||||
),
|
|
||||||
DIV(
|
|
||||||
["id"=>"tagger_body"],
|
|
||||||
DIV(["id"=>"tagger_p-search", "name"=>"Searched Tags"]),
|
|
||||||
DIV(["id"=>"tagger_p-applied", "name"=>"Applied Tags"]),
|
|
||||||
),
|
|
||||||
DIV(
|
|
||||||
["id"=>"tagger_statusbar"],
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,87 +0,0 @@
|
|||||||
/*jshint bitwise:true, curly:true, forin:false, noarg:true, noempty:true, nonew:true, undef:true, strict:false, browser:true, jquery:true */
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* Crossbrowser Drag Handler
|
|
||||||
* http://www.webtoolkit.info/
|
|
||||||
*
|
|
||||||
* Modified by Erik Youngren to move parent node
|
|
||||||
**/
|
|
||||||
|
|
||||||
var DragHandler = {
|
|
||||||
|
|
||||||
|
|
||||||
// private property.
|
|
||||||
_oElem : null,
|
|
||||||
|
|
||||||
|
|
||||||
// public method. Attach drag handler to an element.
|
|
||||||
attach : function(oElem) {
|
|
||||||
oElem.onmousedown = DragHandler._dragBegin;
|
|
||||||
|
|
||||||
// callbacks
|
|
||||||
oElem.dragBegin = function () {};
|
|
||||||
oElem.drag = function () {};
|
|
||||||
oElem.dragEnd = function () {};
|
|
||||||
|
|
||||||
return oElem;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// private method. Begin drag process.
|
|
||||||
_dragBegin : function(e) {
|
|
||||||
var oElem = DragHandler._oElem = this;
|
|
||||||
|
|
||||||
if (isNaN(parseInt(oElem.parentNode.style.left))) { oElem.parentNode.style.left = '0px'; }
|
|
||||||
if (isNaN(parseInt(oElem.parentNode.style.top))) { oElem.parentNode.style.top = '0px'; }
|
|
||||||
|
|
||||||
var x = parseInt(oElem.parentNode.style.left);
|
|
||||||
var y = parseInt(oElem.parentNode.style.top);
|
|
||||||
|
|
||||||
e = e ? e : window.event;
|
|
||||||
oElem.mouseX = e.clientX;
|
|
||||||
oElem.mouseY = e.clientY;
|
|
||||||
|
|
||||||
oElem.dragBegin(oElem, x, y);
|
|
||||||
|
|
||||||
document.onmousemove = DragHandler._drag;
|
|
||||||
document.onmouseup = DragHandler._dragEnd;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// private method. Drag (move) element.
|
|
||||||
_drag : function(e) {
|
|
||||||
var oElem = DragHandler._oElem;
|
|
||||||
|
|
||||||
var x = parseInt(oElem.parentNode.style.left);
|
|
||||||
var y = parseInt(oElem.parentNode.style.top);
|
|
||||||
|
|
||||||
e = e ? e : window.event;
|
|
||||||
oElem.parentNode.style.left = x + (e.clientX - oElem.mouseX) + 'px';
|
|
||||||
oElem.parentNode.style.top = y + (e.clientY - oElem.mouseY) + 'px';
|
|
||||||
|
|
||||||
oElem.mouseX = e.clientX;
|
|
||||||
oElem.mouseY = e.clientY;
|
|
||||||
|
|
||||||
oElem.drag(oElem, x, y);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// private method. Stop drag process.
|
|
||||||
_dragEnd : function() {
|
|
||||||
var oElem = DragHandler._oElem;
|
|
||||||
|
|
||||||
var x = parseInt(oElem.parentNode.style.left);
|
|
||||||
var y = parseInt(oElem.parentNode.style.top);
|
|
||||||
|
|
||||||
oElem.dragEnd(oElem, x, y);
|
|
||||||
|
|
||||||
document.onmousemove = null;
|
|
||||||
document.onmouseup = null;
|
|
||||||
DragHandler._oElem = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
Loading…
x
Reference in New Issue
Block a user