svnno****@sourc*****
svnno****@sourc*****
Wed Mar 5 07:21:01 JST 2008
Revision: 3438 http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3438 Author: pal_gene Date: 2008-03-05 07:21:01 +0900 (Wed, 05 Mar 2008) Log Message: ----------- Add javascript for search filter link. currently confirm with mozilla engine only. Modified Paths: -------------- kazehakase/trunk/data/Makefile.am kazehakase/trunk/module/search/kz-search-common.h Added Paths: ----------- kazehakase/trunk/data/search-result.js Modified: kazehakase/trunk/data/Makefile.am =================================================================== --- kazehakase/trunk/data/Makefile.am 2008-03-04 22:20:57 UTC (rev 3437) +++ kazehakase/trunk/data/Makefile.am 2008-03-04 22:21:01 UTC (rev 3438) @@ -8,10 +8,14 @@ cssdir = $(datadir)/$(PACKAGE) css_DATA = search-result.css +jsdir = $(datadir)/$(PACKAGE) +js_DATA = search-result.js + imagedir = $(datadir)/$(PACKAGE) image_DATA = kz-no-thumbnail.png EXTRA_DIST = \ $(desktop_DATA) \ $(css_DATA) \ + $(js_DATA) \ $(image_DATA) Added: kazehakase/trunk/data/search-result.js =================================================================== --- kazehakase/trunk/data/search-result.js 2008-03-04 22:20:57 UTC (rev 3437) +++ kazehakase/trunk/data/search-result.js 2008-03-04 22:21:01 UTC (rev 3438) @@ -0,0 +1,148 @@ + +function generate_button() { + button = document.createElement("span"); + button.textContent = "filter"; + + /* + class = document.createAttribute("class"); + class.value = "filter_button"; + button.setAttributeNode(class); + */ + + // style + //button.style.cssFloat = "right"; + button.style.margin = "1px"; + button.style.border = "1px dashed gray"; + + // event color + button.addEventListener("mouseover", set_button_style_hover, false); + button.addEventListener("mouseout", set_button_style_normal, false); + + // event color + button.addEventListener("mouseover", popup_menu, false); + button.addEventListener("mouseout", popdown_menu, false); + + return button; +} + +function mouseon_menu_elem(elem) { + document.getElementById("FilterMenu").style.display = "block"; + elem.style.background = "#ff9900"; + elem.style.color = "#000000"; + elem.style.cursor = "pointer"; +} + +function mouseout_menu_elem(elem) { + elem.style.background = "white"; + elem.style.color = ""; +} + +function mouseout_menu() { + document.getElementById("FilterMenu").style.display = "none"; +} + +function click_menu(domain, type) { + if(type == "drop") { + uri = location.href + ' -site:' + domain; + } else if(type == "only") { + uri = location.href + ' site:' + domain; + } else if(type == "new") { + uri = 'history-search:site:' + domain; + } + location.href = uri; +} + +function popup_menu(evt) { + uri = this.parentNode.getElementsByTagName("a")[0].getAttribute("href"); + DomainRegex = new RegExp('://([^/]+)/', ""); + uri.match(DomainRegex); + domain = RegExp.$1; + + menu = '<div onmouseout="mouseout_menu();">'; + + menu += '<div style="background:white;" onmouseover="mouseon_menu_elem(this);" onmouseout="mouseout_menu_elem(this);"' + + ' onclick="click_menu(\'' + domain + '\', \'drop\');">Drop ' + domain + ' from result</div>'; + menu += '<div style="background:white;" onmouseover="mouseon_menu_elem(this);" onmouseout="mouseout_menu_elem(this);"' + + ' onclick="click_menu(\'' + domain + '\', \'only\');">Show only ' + domain + '</div>'; + menu += '<div style="background:white;" onmouseover="mouseon_menu_elem(this);" onmouseout="mouseout_menu_elem(this);"' + + ' onclick="click_menu(\'' + domain + '\', \'new\');">Find history in ' + domain + '</div>'; + + menu += '</div>'; + + FilterMenu = document.getElementById("FilterMenu"); + //FilterMenu.style.virticalAlign = "middle"; + + FilterMenu.innerHTML = menu; + FilterMenu.style.display = "block"; + + // position setting need to place after display is block. + left = this.offsetLeft + this.offsetWidth - FilterMenu.offsetWidth; + if( left < 0 ) left = 0; + FilterMenu.style.left = left + "px"; + FilterMenu.style.top = this.offsetTop + this.offsetHeight + "px"; + +} + +function get_domain(uri) { + return "aaa"; +} + +function popdown_menu() { + document.getElementById("FilterMenu").style.display = "none"; +} + +function set_button_style_hover() { + this.style.border = "1px dashed orange"; +} + +function set_button_style_normal() { + this.style.border = "1px dashed gray"; +} + + + +function insert_button(header_div) { + // header_div.parentNode.insertBefore(generate_button(), header_div.nextSibling); + header_div.appendChild(generate_button()); +} + +function addFilterMenu() { + menu = document.createElement("div"); + menu.setAttribute("id", "FilterMenu"); + menu.style.display = "none"; + menu.style.position = "absolute"; + + document.getElementsByTagName("body")[0].appendChild(menu); +} + +function search_title() { + // debug + // var log = document.getElementById('log'); + + var divObjs = document.getElementsByTagName("div"); + for( var i=0; i < divObjs.length; i++ ) { + var current = divObjs[i]; + switch( current.getAttribute("class") ) { + case "header": + insert_button(current); + //current.style.cssFloat = "left"; + // show result in 1 line. + //current.style.whiteSpace = "nowrap"; + //current.style.overflow = "hidden"; + //current.style.maxWidth = "100%"; + break; + case "summary": + current.style.clear = "both"; + // fix current css + current.style.borderTop = "solid 1px black"; + break; + } + } + + addFilterMenu(); + + // debug + //log.innerHTML = out; +} +// out = ''; +window.onload = search_title; Modified: kazehakase/trunk/module/search/kz-search-common.h =================================================================== --- kazehakase/trunk/module/search/kz-search-common.h 2008-03-04 22:20:57 UTC (rev 3437) +++ kazehakase/trunk/module/search/kz-search-common.h 2008-03-04 22:21:01 UTC (rev 3438) @@ -27,9 +27,10 @@ #define DTD "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">" #define HEAD "<head>\n" \ - " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>" \ + " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/>\n" \ " <title>%s - Full-text search in history</title>\n" \ " <link rel=\"stylesheet\" type=\"text/css\" href=\"history-search:?css=search-result.css\">\n" \ + " <script type=\"text/javascript\" src=\"history-search:?css=search-result.js\"></script>\n" \ "</head>\n" #define HEADER "" #define CONTENT "<div class=\"content\">\n" \