[kazehakase-svn] [3438] Add javascript for search filter link.

Zurück zum Archiv-Index

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" \




More information about the Kazehakase-cvs mailing list
Zurück zum Archiv-Index