From dd1482aaf52763c6b25fa17765dde46307c25320 Mon Sep 17 00:00:00 2001 From: apfelmaennchen Date: Fri, 25 Nov 2011 00:32:18 +0000 Subject: [PATCH] further update to YMarks git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@8100 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/YMarks.html | 103 ++++++++++++++++--- htroot/api/ymarks/import_ymark.java | 2 +- htroot/env/yacy-ymarks.css | 1 + htroot/jquery/js/jquery.multiselect.min.js | 2 +- htroot/js/yacy-ymarks-bookmark-actions.js | 100 ++++++++++++------ htroot/js/yacy-ymarks.js | 39 ++++--- source/de/anomic/data/ymark/YMarkTables.java | 48 ++------- source/de/anomic/data/ymark/YMarkUtil.java | 4 +- 8 files changed, 200 insertions(+), 99 deletions(-) diff --git a/htroot/YMarks.html b/htroot/YMarks.html index ebc7b5c56..9283dde29 100644 --- a/htroot/YMarks.html +++ b/htroot/YMarks.html @@ -88,31 +88,33 @@ To see a list of all APIs, please visit the -
-

Tag Managerhelp

- All tag actions are applied to the sub-set of bookmarks defined by this query. + +

Tag Managerhelp

+ All tag actions are applied to the sub-set of bookmarks defined by this query.

Query -
-
- Tags (comma seperated) -
- Tags (regexp) -
- Folders (comma seperated) -
- Folders (regexp) - + +
+ Query Type +


-
Replace Tags


- Replace with (comma separated tags) + Enter tags to add (replace with) +
(comma separated tags)

+

@@ -222,6 +224,77 @@ To see a list of all APIs, please visit the
no + +
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Site + + + +
Scheduler + run this crawl once
+ scheduled, look every + + +
+      for new documents automatically. +
Path + load all files in domain
+ load only files in a sub-path of given url + + + +
Limitations + not more than + + documents +
Dynamic URLs + allow + query-strings (urls with a '?' in the path) + + + + + + + + +
+ +
#%env/templates/footer.template%# diff --git a/htroot/api/ymarks/import_ymark.java b/htroot/api/ymarks/import_ymark.java index 0332d964d..e09c05d66 100644 --- a/htroot/api/ymarks/import_ymark.java +++ b/htroot/api/ymarks/import_ymark.java @@ -40,7 +40,7 @@ public class import_ymark { final UserDB.Entry user = sb.userDB.getUser(header); final boolean isAdmin = (sb.verifyAuthentication(header, true)); final boolean isAuthUser = user!= null && user.hasRight(UserDB.AccessRight.BOOKMARK_RIGHT); - final int queueSize = 20; + final int queueSize = 200; Thread t; YMarkEntry bmk; diff --git a/htroot/env/yacy-ymarks.css b/htroot/env/yacy-ymarks.css index 87511d9c8..d48d365ea 100644 --- a/htroot/env/yacy-ymarks.css +++ b/htroot/env/yacy-ymarks.css @@ -17,6 +17,7 @@ margin-top:5px; padding-top:2px; } + #ymarks_folders_tab { margin-left: -5px; margin-right: -5px; diff --git a/htroot/jquery/js/jquery.multiselect.min.js b/htroot/jquery/js/jquery.multiselect.min.js index 0f21c8d39..78b95e2fc 100644 --- a/htroot/jquery/js/jquery.multiselect.min.js +++ b/htroot/jquery/js/jquery.multiselect.min.js @@ -17,4 +17,4 @@ * http://www.gnu.org/licenses/gpl.html * */ -(function(d){var i=0;d.widget("ech.multiselect",{options:{header:!0,height:175,minWidth:225,classes:"",checkAllText:"Check all",uncheckAllText:"Uncheck all",noneSelectedText:"Select options",selectedText:"# selected",selectedList:0,show:"",hide:"",autoOpen:!1,multiple:!0,position:{}},_create:function(){var a=this.element.hide(),b=this.options;this.speed=d.fx.speeds._default;this._isOpen=!1;a=(this.button=d('')).addClass("ui-multiselect ui-widget ui-state-default ui-corner-all").addClass(b.classes).attr({title:a.attr("title"), "aria-haspopup":!0,tabIndex:a.attr("tabIndex")}).insertAfter(a);(this.buttonlabel=d("")).html(b.noneSelectedText).appendTo(a);var a=(this.menu=d("
")).addClass("ui-multiselect-menu ui-widget ui-widget-content ui-corner-all").addClass(b.classes).insertAfter(a),c=(this.header=d("
")).addClass("ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix").appendTo(a);(this.headerLinkContainer=d("
    ")).addClass("ui-helper-reset").html(function(){return b.header===!0? '
  • '+b.checkAllText+'
  • '+b.uncheckAllText+"
  • ":typeof b.header==="string"?"
  • "+b.header+"
  • ":""}).append('
  • ').appendTo(c);(this.checkboxContainer=d("
      ")).addClass("ui-multiselect-checkboxes ui-helper-reset").appendTo(a); this._bindEvents();this.refresh(!0);b.multiple||a.addClass("ui-multiselect-single")},_init:function(){this.options.header===!1&&this.header.hide();this.options.multiple||this.headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none").hide();this.options.autoOpen&&this.open();this.element.is(":disabled")&&this.disable()},refresh:function(a){var b=this.options,c=this.menu,e=this.checkboxContainer,h=[],f=[],g=this.element.attr("id")||i++;this.element.find("option").each(function(a){d(this); var e=this.parentNode,c=this.innerHTML,i=this.title,m=this.value,a=this.id||"ui-multiselect-"+g+"-option-"+a,j=this.disabled,l=this.selected,k=["ui-corner-all"];e.tagName.toLowerCase()==="optgroup"&&(e=e.getAttribute("label"),d.inArray(e,h)===-1&&(f.push('
    • '+e+"
    • "),h.push(e)));j&&k.push("ui-state-disabled");l&&!b.multiple&&k.push("ui-state-active");f.push('
    • ');f.push('
    • ")});e.html(f.join(""));this.labels=c.find("label");this._setButtonWidth();this._setMenuWidth();this.button[0].defaultValue=this.update();a||this._trigger("refresh")},update:function(){var a= this.options,b=this.labels.find("input"),c=b.filter(":checked"),e=c.length,a=e===0?a.noneSelectedText:d.isFunction(a.selectedText)?a.selectedText.call(this,e,b.length,c.get()):/\d/.test(a.selectedList)&&a.selectedList>0&&e<=a.selectedList?c.map(function(){return this.title}).get().join(", "):a.selectedText.replace("#",e).replace("#",b.length);this.buttonlabel.html(a);return a},_bindEvents:function(){function a(){b[b._isOpen?"close":"open"]();return!1}var b=this,c=this.button;c.find("span").bind("click.multiselect", a);c.bind({click:a,keypress:function(a){switch(a.which){case 27:case 38:case 37:b.close();break;case 39:case 40:b.open()}},mouseenter:function(){c.hasClass("ui-state-disabled")||d(this).addClass("ui-state-hover")},mouseleave:function(){d(this).removeClass("ui-state-hover")},focus:function(){c.hasClass("ui-state-disabled")||d(this).addClass("ui-state-focus")},blur:function(){d(this).removeClass("ui-state-focus")}});this.header.delegate("a","click.multiselect",function(a){if(d(this).hasClass("ui-multiselect-close"))b.close(); else b[d(this).hasClass("ui-multiselect-all")?"checkAll":"uncheckAll"]();a.preventDefault()});this.menu.delegate("li.ui-multiselect-optgroup-label a","click.multiselect",function(a){a.preventDefault();var c=d(this),f=c.parent().nextUntil("li.ui-multiselect-optgroup-label").find("input:visible:not(:disabled)"),g=f.get(),c=c.parent().text();b._trigger("beforeoptgrouptoggle",a,{inputs:g,label:c})!==!1&&(b._toggleChecked(f.filter(":checked").length!==f.length,f),b._trigger("optgrouptoggle",a,{inputs:g, label:c,checked:g[0].checked}))}).delegate("label","mouseenter.multiselect",function(){d(this).hasClass("ui-state-disabled")||(b.labels.removeClass("ui-state-hover"),d(this).addClass("ui-state-hover").find("input").focus())}).delegate("label","keydown.multiselect",function(a){a.preventDefault();switch(a.which){case 9:case 27:b.close();break;case 38:case 40:case 37:case 39:b._traverse(a.which,this);break;case 13:d(this).find("input")[0].click()}}).delegate('input[type="checkbox"], input[type="radio"]', "click.multiselect",function(a){var c=d(this),f=this.value,g=this.checked,i=b.element.find("option");this.disabled||b._trigger("click",a,{value:f,text:this.title,checked:g})===!1?a.preventDefault():(c.attr("aria-selected",g),i.each(function(){if(this.value===f)(this.selected=g)?this.setAttribute("selected","selected"):this.removeAttribute("selected");else if(!b.options.multiple)this.selected=!1}),b.options.multiple||(b.labels.removeClass("ui-state-active"),c.closest("label").toggleClass("ui-state-active", g),b.close()),b.element.trigger("change"),setTimeout(d.proxy(b.update,b),10))});d(document).bind("mousedown.multiselect",function(a){b._isOpen&&!d.contains(b.menu[0],a.target)&&!d.contains(b.button[0],a.target)&&a.target!==b.button[0]&&b.close()});d(this.element[0].form).bind("reset.multiselect",function(){setTimeout(function(){b.update()},10)})},_setButtonWidth:function(){var a=this.element.outerWidth(),b=this.options;if(/\d/.test(b.minWidth)&&a-1&&e._toggleCheckbox("selected", a).call(this)});c.length&&this.element.trigger("change")},_toggleDisabled:function(a){this.button.attr({disabled:a,"aria-disabled":a})[a?"addClass":"removeClass"]("ui-state-disabled");this.menu.find("input").attr({disabled:a,"aria-disabled":a}).parent()[a?"addClass":"removeClass"]("ui-state-disabled");this.element.attr({disabled:a,"aria-disabled":a})},open:function(){var a=this.button,b=this.menu,c=this.speed,e=this.options;if(!(this._trigger("beforeopen")===!1||a.hasClass("ui-state-disabled")||this._isOpen)){var h= b.find("ul:last"),f=e.show,g=a.position();d.isArray(e.show)&&(f=e.show[0],c=e.show[1]||this.speed);h.scrollTop(0).height(e.height);d.ui.position&&!d.isEmptyObject(e.position)?(e.position.of=e.position.of||a,b.show().position(e.position).hide().show(f,c)):b.css({top:g.top+a.outerHeight(),left:g.left}).show(f,c);this.labels.eq(0).trigger("mouseover").trigger("mouseenter").find("input").trigger("focus");a.addClass("ui-state-active");this._isOpen=!0;this._trigger("open")}},close:function(){if(this._trigger("beforeclose")!== !1){var a=this.options,b=a.hide,c=this.speed;d.isArray(a.hide)&&(b=a.hide[0],c=a.hide[1]||this.speed);this.menu.hide(b,c);this.button.removeClass("ui-state-active").trigger("blur").trigger("mouseleave");this._isOpen=!1;this._trigger("close")}},enable:function(){this._toggleDisabled(!1)},disable:function(){this._toggleDisabled(!0)},checkAll:function(){this._toggleChecked(!0);this._trigger("checkAll")},uncheckAll:function(){this._toggleChecked(!1);this._trigger("uncheckAll")},getChecked:function(){return this.menu.find("input").filter(":checked")}, destroy:function(){d.Widget.prototype.destroy.call(this);this.button.remove();this.menu.remove();this.element.show();return this},isOpen:function(){return this._isOpen},widget:function(){return this.menu},_setOption:function(a,b){var c=this.menu;switch(a){case "header":c.find("div.ui-multiselect-header")[b?"show":"hide"]();break;case "checkAllText":c.find("a.ui-multiselect-all span").eq(-1).text(b);break;case "uncheckAllText":c.find("a.ui-multiselect-none span").eq(-1).text(b);break;case "height":c.find("ul:last").height(parseInt(b, 10));break;case "minWidth":this.options[a]=parseInt(b,10);this._setButtonWidth();this._setMenuWidth();break;case "selectedText":case "selectedList":case "noneSelectedText":this.options[a]=b;this.update();break;case "classes":c.add(this.button).removeClass(this.options.classes).addClass(b)}d.Widget.prototype._setOption.apply(this,arguments)}})})(jQuery); +(function(d){var i=0;d.widget("ech.multiselect",{options:{header:!0,height:175,minWidth:225,classes:"",checkAllText:"Check all",uncheckAllText:"Uncheck all",noneSelectedText:"Select options",selectedText:"# selected",selectedList:0,show:"",hide:"",autoOpen:!1,multiple:!0,position:{}},_create:function(){var a=this.element.hide(),b=this.options;this.speed=d.fx.speeds._default;this._isOpen=!1;a=(this.button=d('')).addClass("ui-multiselect ui-widget ui-state-default ui-corner-all").addClass(b.classes).attr({title:a.attr("title"), "aria-haspopup":!0,tabIndex:a.attr("tabIndex")}).insertAfter(a);(this.buttonlabel=d("")).html(b.noneSelectedText).appendTo(a);var a=(this.menu=d("
      ")).addClass("ui-multiselect-menu ui-widget ui-widget-content ui-corner-all").addClass(b.classes).insertAfter(a),c=(this.header=d("
      ")).addClass("ui-widget-header ui-corner-all ui-multiselect-header ui-helper-clearfix").appendTo(a);(this.headerLinkContainer=d("
        ")).addClass("ui-helper-reset").html(function(){return b.header===!0? '
      • '+b.checkAllText+'
      • '+b.uncheckAllText+"
      • ":typeof b.header==="string"?"
      • "+b.header+"
      • ":""}).append('
      • ').appendTo(c);(this.checkboxContainer=d("
          ")).addClass("ui-multiselect-checkboxes ui-helper-reset").appendTo(a); this._bindEvents();this.refresh(!0);b.multiple||a.addClass("ui-multiselect-single")},_init:function(){this.options.header===!1&&this.header.hide();this.options.multiple||this.headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none").hide();this.options.autoOpen&&this.open();this.element.is(":disabled")&&this.disable()},refresh:function(a){var b=this.options,c=this.menu,e=this.checkboxContainer,h=[],f=[],g=this.element.attr("id")||i++;this.element.find("option").each(function(a){d(this); var e=this.parentNode,c=this.innerHTML,i=this.title,m=this.value,a=this.id||"ui-multiselect-"+g+"-option-"+a,j=this.disabled,l=this.selected,k=["ui-corner-all"];e.tagName.toLowerCase()==="optgroup"&&(e=e.getAttribute("label"),d.inArray(e,h)===-1&&(f.push('
        • '+e+"
        • "),h.push(e)));j&&k.push("ui-state-disabled");l&&!b.multiple&&k.push("ui-state-active");f.push('
        • ');f.push('
        • ")});e.html(f.join(""));this.labels=c.find("label");this._setButtonWidth();this._setMenuWidth();this.button[0].defaultValue=this.update();a||this._trigger("refresh")},update:function(){var a= this.options,b=this.labels.find("input"),c=b.filter(":checked"),e=c.length,a=e===0?a.noneSelectedText:d.isFunction(a.selectedText)?a.selectedText.call(this,e,b.length,c.get()):/\d/.test(a.selectedList)&&a.selectedList>0&&e<=a.selectedList?c.map(function(){return this.title}).get().join(", "):a.selectedText.replace("#",e).replace("#",b.length);this.buttonlabel.html(a);return a},_bindEvents:function(){function a(){b[b._isOpen?"close":"open"]();return!1}var b=this,c=this.button;c.find("span").bind("click.multiselect", a);c.bind({click:a,keypress:function(a){switch(a.which){case 27:case 38:case 37:b.close();break;case 39:case 40:b.open()}},mouseenter:function(){c.hasClass("ui-state-disabled")||d(this).addClass("ui-state-hover")},mouseleave:function(){d(this).removeClass("ui-state-hover")},focus:function(){c.hasClass("ui-state-disabled")||d(this).addClass("ui-state-focus")},blur:function(){d(this).removeClass("ui-state-focus")}});this.header.delegate("a","click.multiselect",function(a){if(d(this).hasClass("ui-multiselect-close"))b.close(); else b[d(this).hasClass("ui-multiselect-all")?"checkAll":"uncheckAll"]();a.preventDefault()});this.menu.delegate("li.ui-multiselect-optgroup-label a","click.multiselect",function(a){a.preventDefault();var c=d(this),f=c.parent().nextUntil("li.ui-multiselect-optgroup-label").find("input:visible:not(:disabled)"),g=f.get(),c=c.parent().text();b._trigger("beforeoptgrouptoggle",a,{inputs:g,label:c})!==!1&&(b._toggleChecked(f.filter(":checked").length!==f.length,f),b._trigger("optgrouptoggle",a,{inputs:g, label:c,checked:g[0].checked}))}).delegate("label","mouseenter.multiselect",function(){d(this).hasClass("ui-state-disabled")||(b.labels.removeClass("ui-state-hover"),d(this).addClass("ui-state-hover").find("input").focus())}).delegate("label","keydown.multiselect",function(a){a.preventDefault();switch(a.which){case 9:case 27:b.close();break;case 38:case 40:case 37:case 39:b._traverse(a.which,this);break;case 13:d(this).find("input")[0].click()}}).delegate('input[type="checkbox"], input[type="radio"]', "click.multiselect",function(a){var c=d(this),f=this.value,g=this.checked,i=b.element.find("option");this.disabled||b._trigger("click",a,{value:f,text:this.title,checked:g})===!1?a.preventDefault():(c.attr("aria-selected",g),i.each(function(){if(this.value===f)(this.selected=g)?this.setAttribute("selected","selected"):this.removeAttribute("selected");else if(!b.options.multiple)this.selected=!1}),b.options.multiple||(b.labels.removeClass("ui-state-active"),c.closest("label").toggleClass("ui-state-active", g),b.close()),b.element.trigger("change"),setTimeout(d.proxy(b.update,b),10))});d(document).bind("mousedown.multiselect",function(a){b._isOpen&&!d.contains(b.menu[0],a.target)&&!d.contains(b.button[0],a.target)&&a.target!==b.button[0]&&b.close()});d(this.element[0].form).bind("reset.multiselect",function(){setTimeout(function(){b.update()},10)})},_setButtonWidth:function(){var a=this.element.outerWidth(),b=this.options;if(/\d/.test(b.minWidth)&&ab.maxWidth)a=b.maxWidth;this.button.width(a)},_setMenuWidth:function(){var a= this.menu,b=this.button.outerWidth()-parseInt(a.css("padding-left"),10)-parseInt(a.css("padding-right"),10)-parseInt(a.css("border-right-width"),10)-parseInt(a.css("border-left-width"),10);a.width(b||this.button.outerWidth())},_traverse:function(a,b){var c=d(b),e=a===38||a===37,c=c.parent()[e?"prevAll":"nextAll"]("li:not(.ui-multiselect-disabled, .ui-multiselect-optgroup-label)")[e?"last":"first"]();c.length?c.find("label").trigger("mouseover"):(c=this.menu.find("ul:last"),this.menu.find("label")[e? "last":"first"]().trigger("mouseover"),c.scrollTop(e?c.height():0))},_toggleCheckbox:function(a,b){return function(){!this.disabled&&(this[a]=b);b?this.setAttribute("aria-selected",!0):this.removeAttribute("aria-selected")}},_toggleChecked:function(a,b){var c=b&&b.length?b:this.labels.find("input"),e=this;c.each(this._toggleCheckbox("checked",a));this.update();var h=c.map(function(){return this.value}).get();this.element.find("option").each(function(){!this.disabled&&d.inArray(this.value,h)>-1&&e._toggleCheckbox("selected", a).call(this)});c.length&&this.element.trigger("change")},_toggleDisabled:function(a){this.button.attr({disabled:a,"aria-disabled":a})[a?"addClass":"removeClass"]("ui-state-disabled");this.menu.find("input").attr({disabled:a,"aria-disabled":a}).parent()[a?"addClass":"removeClass"]("ui-state-disabled");this.element.attr({disabled:a,"aria-disabled":a})},open:function(){var a=this.button,b=this.menu,c=this.speed,e=this.options;if(!(this._trigger("beforeopen")===!1||a.hasClass("ui-state-disabled")||this._isOpen)){var h= b.find("ul:last"),f=e.show,g=a.position();d.isArray(e.show)&&(f=e.show[0],c=e.show[1]||this.speed);h.scrollTop(0).height(e.height);d.ui.position&&!d.isEmptyObject(e.position)?(e.position.of=e.position.of||a,b.show().position(e.position).hide().show(f,c)):b.css({top:g.top+a.outerHeight(),left:g.left}).show(f,c);this.labels.eq(0).trigger("mouseover").trigger("mouseenter").find("input").trigger("focus");a.addClass("ui-state-active");this._isOpen=!0;this._trigger("open")}},close:function(){if(this._trigger("beforeclose")!== !1){var a=this.options,b=a.hide,c=this.speed;d.isArray(a.hide)&&(b=a.hide[0],c=a.hide[1]||this.speed);this.menu.hide(b,c);this.button.removeClass("ui-state-active").trigger("blur").trigger("mouseleave");this._isOpen=!1;this._trigger("close")}},enable:function(){this._toggleDisabled(!1)},disable:function(){this._toggleDisabled(!0)},checkAll:function(){this._toggleChecked(!0);this._trigger("checkAll")},uncheckAll:function(){this._toggleChecked(!1);this._trigger("uncheckAll")},getChecked:function(){return this.menu.find("input").filter(":checked")}, destroy:function(){d.Widget.prototype.destroy.call(this);this.button.remove();this.menu.remove();this.element.show();return this},isOpen:function(){return this._isOpen},widget:function(){return this.menu},_setOption:function(a,b){var c=this.menu;switch(a){case "header":c.find("div.ui-multiselect-header")[b?"show":"hide"]();break;case "checkAllText":c.find("a.ui-multiselect-all span").eq(-1).text(b);break;case "uncheckAllText":c.find("a.ui-multiselect-none span").eq(-1).text(b);break;case "height":c.find("ul:last").height(parseInt(b, 10));break;case "minWidth":this.options[a]=parseInt(b,10);this._setButtonWidth();this._setMenuWidth();break;case "selectedText":case "selectedList":case "noneSelectedText":this.options[a]=b;this.update();break;case "classes":c.add(this.button).removeClass(this.options.classes).addClass(b)}d.Widget.prototype._setOption.apply(this,arguments)}})})(jQuery); diff --git a/htroot/js/yacy-ymarks-bookmark-actions.js b/htroot/js/yacy-ymarks-bookmark-actions.js index 12409ad9d..669dd2610 100644 --- a/htroot/js/yacy-ymarks-bookmark-actions.js +++ b/htroot/js/yacy-ymarks-bookmark-actions.js @@ -56,37 +56,44 @@ function bm_action(com,grid) { $("select[name='bm_public']").setValue($('.trSelected',grid).find('img').attr('alt')); $("#ymarks_add_dialog").dialog('open'); } else if (com=='Crawl') { - var param = []; - var count = 0; - var i = 0; - var err = ""; - var succ = ""; - var msg = ""; - $('.trSelected',grid).each(function() { - var pk = $(this).find('.apicall_pk').text(); - if (pk == "") { - count++; - err = err + "\n" + $(this).find('.url').text(); - } - succ = succ + "\n" + $(this).find('.url').text(); - var item = {name : 'item_'+count, value : "mark_"+pk}; - param[i] = item; - i++; - }); - if(i-count > 0) - msg = msg + "Success:"+succ; - if(count > 0) - msg = msg + "\n\nError: No entry in API Table found:"+err; - alert(msg); - param[param.length] = { name : 'execrows', value : 'true' }; - $.ajax({ - type: "POST", - data: param, - url: "Table_API_p.html", - dataType: "html", - success: function() { - } - }); + if ($('.trSelected',grid).length == 1 && $(this).find('.apicall_pk').text() == "") { + var pk = $(this).find('.apicall_pk').text(); + $("input[name='crawlingURL']").setValue($('.trSelected',grid).find('.url').text()); + $("#ymarks_crawlstart").dialog('open'); + } else { + var param = []; + var i = 0; + $('.trSelected',grid).each(function() { + var pk = $(this).find('.apicall_pk').text(); + + if (pk == "") { + /* + if (crawl_param.length == 0) { + $('You have selected one or more bookmarks without a crawl start entry in the API table. You can define a default profile which will be used instead.').appendTo("#ymarks_crawlstart_msg"); + $("input[name='crawlingURL']").attr("disabled","disabled"); + $("input[name='crawlingURL']").setValue("Default profile"); + $("#ymarks_crawlstart").dialog('open'); + } + */ + alert("Multiple selection currently only supports bookmarks"+"\n"+"with an existing crawl profile in the API table."); + } else { + var item = {name : 'item_'+i, value : "mark_"+pk}; + param[i] = item; + i++; + } + }); + param[param.length] = { name : 'execrows', value : 'true' }; + $.ajax({ + type: "POST", + data: param, + url: "Table_API_p.html", + dataType: "html", + success: function() { + $('#ymarks_flexigrid').flexReload(); + } + }); + + } } else if (com=='XBEL') { window.open("/api/ymarks/get_xbel.xml","_blank"); return false; @@ -131,4 +138,35 @@ function bm_dialog() { Cancel: function() { $("#ymarks_add_dialog").dialog("close"); } } }); + /* Initialize Crawl Start Dialog */ + $("#ymarks_crawlstart").dialog({ + autoOpen: false, + height: 390, + width: 470, + position: ['top',100], + modal: true, + resizable: false, + buttons: { + OK: function() { + var param = []; + var i = 0; + $("#ymarks_crawler input[type='text'],#ymarks_crawler input:checked,#ymarks_crawler select,#ymarks_crawler input[type='hidden']").each(function() { + var item = {name : $(this).attr("name"), value : $(this).attr("value")}; + param[i] = item; + i++; + }); + $.ajax({ + type: "POST", + data: param, + url: "Crawler_p.html", + dataType: "html", + success: function() { + } + }); + $('#ymarks_flexigrid').flexReload(); + $("#ymarks_crawlstart").dialog("close"); + } , + Cancel: function() { $("#ymarks_crawlstart").dialog("close"); } + } + }); } \ No newline at end of file diff --git a/htroot/js/yacy-ymarks.js b/htroot/js/yacy-ymarks.js index d9a260683..5e3a02eee 100644 --- a/htroot/js/yacy-ymarks.js +++ b/htroot/js/yacy-ymarks.js @@ -20,7 +20,7 @@ $(document).ready(function() { {display: 'Crawl start', name : 'crawl_start', width : 20, sortable : false, align: 'center'}, {display: 'Title', name : 'title', width : 400, sortable : true, align: 'left'}, {display: 'Tags', name : 'tags', width : 160, sortable : false, align: 'left'}, - {display: 'Folders', name : 'folders', width : 160, sortable : true, align: 'left', hide: true}, + {display: 'Folders', name : 'folders', width : 160, sortable : true, align: 'left'}, {display: 'Date added', name : 'date_added', width : 100, sortable : true, align: 'left'}, {display: 'Date modified', name : 'date_modified', width : 100, sortable : true, align: 'left'}, {display: 'Date visited', name : 'date_visited', width : 100, sortable : true, align: 'left', hide: true}, @@ -57,7 +57,7 @@ $(document).ready(function() { {display: 'Full text (regexp)', name : ''}, {display: 'Tags (comma seperated)', name : '_tags'}, {display: 'Tags (regexp)', name : 'tags'}, - {display: 'Singel Folder', name : '_folder'}, + {display: 'Folders (comma seperated)', name : '_folder'}, {display: 'Folders (regexp)', name : 'folders'}, {display: 'Title (regexp)', name : 'title'}, {display: 'Description (regexp)', name : 'desc'} @@ -110,10 +110,11 @@ $(document).ready(function() { } }); - loadTags("#tag_include", "alpha", ""); $("#tag_include").multiselect({ noneSelectedText: "Select (multiple) tags ...", height: height-50, + minWidth: 200, + maxWidth: 200, selectedList: 4, header: "", click: function(event, ui) { @@ -130,21 +131,33 @@ $(document).ready(function() { $('#ymarks_flexigrid').flexReload(); }, beforeopen: function() { - // $(this).multiselect("uncheckAll"); + loadTags("#tag_include", "alpha", ""); }, open: function() { qtag = ""; } }).multiselectfilter(); - loadTags("#tag_select", "alpha", ""); $("#tag_select").multiselect({ - noneSelectedText: "Select tags to replace ...", + noneSelectedText: "Select tags to remove ...", + minWidth: 200, + maxWidth: 200, header: "", selectedList: 4, - height: height - 540 + height: height - 540, + beforeopen: function() { + loadTags("#tag_select", "alpha", ""); + } }).multiselectfilter(); + $("#ymarks_qtype").multiselect({ + noneSelectedText: "Select query type ...", + minWidth: 200, + maxWidth: 200, + header: "", + selectedList: 1 + }); + $('#ymarks_tagmanager').submit(function() { var param = []; $('#ymarks_tagmanager input[type="text"],#ymarks_tagmanager input[type="radio"]:checked').each(function(i){ @@ -153,10 +166,12 @@ $(document).ready(function() { var tags = ""; var ta = $("#tag_select").val(); var i = 0; - while (i'+tag+' ['+count+']').appendTo(select); - }); //close each( + }); //close each( $(select).multiselect('refresh'); } }); //close $.ajax( diff --git a/source/de/anomic/data/ymark/YMarkTables.java b/source/de/anomic/data/ymark/YMarkTables.java index 84f439c9e..3ee053784 100644 --- a/source/de/anomic/data/ymark/YMarkTables.java +++ b/source/de/anomic/data/ymark/YMarkTables.java @@ -245,48 +245,22 @@ public class YMarkTables { } } - public void replaceTags(final Iterator rowIterator, final String bmk_user, final String tagString, final String replaceString) throws IOException, RowSpaceExceededException { - final String[] tagArray = YMarkUtil.cleanTagsString(tagString).split(YMarkUtil.TAGS_SEPARATOR); - final StringBuilder tagStringBuilder = new StringBuilder(BUFFER_LENGTH); + public void replaceTags(final Iterator rowIterator, final String bmk_user, final String tagString, final String replaceString) throws IOException, RowSpaceExceededException { + final HashSet remove = YMarkUtil.keysStringToSet(YMarkUtil.cleanTagsString(tagString.toLowerCase())); + final StringBuilder t = new StringBuilder(200); + HashSet tags; Row row; while (rowIterator.hasNext()) { row = rowIterator.next(); if(row != null) { - for (final String element : tagArray) { - tagStringBuilder.setLength(0); - tagStringBuilder.append(row.get(YMarkEntry.BOOKMARK.TAGS.key(), YMarkEntry.BOOKMARK.TAGS.deflt())); - int start = tagStringBuilder.indexOf(element); - int end = start; - while (end<=tagStringBuilder.length() && end != -1) { - if (end == (tagStringBuilder.length())) { - if (end-start == element.length()) { - if (start > 0) - start--; // also replace the tag separator - tagStringBuilder.replace(start, end, YMarkUtil.EMPTY_STRING); - } - break; - } else if (tagStringBuilder.charAt(end) == ',') { - if (end-start == element.length()) { - if (start > 0) - start--; // also replace the tag separator - tagStringBuilder.replace(start, end, YMarkUtil.EMPTY_STRING); - } else { - start = tagStringBuilder.indexOf(element, end+1); - end = start; - } - } else if (tagStringBuilder.charAt(end) == ' ') { - start = tagStringBuilder.indexOf(element, end); - end = start; - } else { - end++; - } - } - tagStringBuilder.append(YMarkUtil.TAGS_SEPARATOR); - tagStringBuilder.append(replaceString); - row.put(YMarkEntry.BOOKMARK.TAGS.key(), YMarkUtil.cleanTagsString(tagStringBuilder.toString())); - this.worktables.update(TABLES.BOOKMARKS.tablename(bmk_user), row); - } + tags = YMarkUtil.keysStringToSet(row.get(YMarkEntry.BOOKMARK.TAGS.key(), YMarkEntry.BOOKMARK.TAGS.deflt()).toLowerCase()); + tags.removeAll(remove); + t.append(YMarkUtil.keySetToString(tags)); } + t.append(YMarkUtil.TAGS_SEPARATOR); + t.append(replaceString); + row.put(YMarkEntry.BOOKMARK.TAGS.key(), YMarkUtil.cleanTagsString(t.toString())); + this.worktables.update(TABLES.BOOKMARKS.tablename(bmk_user), row); } } diff --git a/source/de/anomic/data/ymark/YMarkUtil.java b/source/de/anomic/data/ymark/YMarkUtil.java index 13387ca4d..aafb795cf 100644 --- a/source/de/anomic/data/ymark/YMarkUtil.java +++ b/source/de/anomic/data/ymark/YMarkUtil.java @@ -87,7 +87,7 @@ public class YMarkUtil { public final static String cleanTagsString(final String tagsString) { StringBuilder ts = new StringBuilder(tagsString); if(ts.length() == 0) - return YMarkEntry.BOOKMARK.TAGS.deflt(); + return YMarkUtil.EMPTY_STRING; // get rid of double commas and space characters following a comma for (int i = 0; i < ts.length()-1; i++) { if (ts.charAt(i) == TAGS_SEPARATOR.charAt(0)) { @@ -107,7 +107,7 @@ public class YMarkUtil { public final static String cleanFoldersString(final String foldersString) { if(foldersString.isEmpty()) - return YMarkEntry.BOOKMARK.FOLDERS.deflt(); + return YMarkUtil.EMPTY_STRING; StringBuilder fs = new StringBuilder(cleanTagsString(foldersString)); if(fs.length() == 0) return YMarkEntry.BOOKMARK.FOLDERS.deflt();