Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
[img[Mapa conceptual sobre las características de una buena búsqueda|buenas_busquedas_.png]]
Expectations - the list of features for an ideal search engine
1) coverage
If we are interested in producing any quantitative measures, then the ''coverage of the search tool should be uniform (over all the existing domains) and exhaustive''. This is essential for measures based on the size of the site or domain, or on its visibility (e.g. number of inlinks or outlinks), but is also a basic requirement for sampling Web sites or pages. This request is not 100% achievable: new Web pages are being created continuously and it is impossible to capture them instantly. Still we want the search engine to cover as many pages as possible.
2) reliability
According to the Oxford dictionary (1989), reliability is “the extent to which a measurement made repeatedly in identical circumstances will yield concordant results”. In order to be able to work with search engines, the results sets have to be stable (or almost stable) for some short period of time (e.g., an hour or a day). It is acceptable that search results change over time, because of the dynamic changes occurring on the Web and because the databases of the search engines get updated. ''However it is not acceptable to have major fluctuations in retrieval results, when it is clear that the reasons for the major changes are not caused by the above mentioned reasons''.
Judit ~Bar-Ilan. Expectations versus reality – Search engine features needed for Web research at mid 2005. Cybermetrics. Vol. 9 (2005)
<html>
<form action="http://www.google.com/cse" id="cse-search-box">
<div>
<input type="hidden" name="cx" value="011399946718894297332:jqnjlivwjmi" />
<input type="hidden" name="ie" value="UTF-8" />
<input type="text" name="q" size="31" />
<input type="submit" name="sa" value="Buscar" />
</div>
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&lang=es"></script>
</html>
We searched for “–kxht site:.hu” (without the word kxht and in the Hungarian domain) in Yahoo and Google, and “site:hu -(kxht)” in MSN on January 13, 2005 and again on July 17, 2005. ''We had to exclude a very rare word, because Google did not support standalone searches for sites at those dates''.
Judit ~Bar-Ilan. Expectations versus reality – Search engine features needed for Web research at mid 2005. Cybermetrics. Vol. 9 (2005)
[img[Diseño de una búsqueda avanzada|busqueda_avanzada_g.png]]
Another problem is the non-uniformity of coverage. Snyder and Rosenbaum (1999) have shown that the even the relative coverage of major domain of different search engines is not the same. Thelwall (2000) ''examined the coverage of large national domains, and found that the coverage was so uneven that reasonable calculation of the Web Impact Factor (WIF, Ingwersen, 1998) was not possible based on data provided by the search engines.'' Current results show that coverage of search engines is still uneven. We searched for “–kxht site:.hu” (without the word kxht and in the Hungarian domain) in Yahoo and Google, and “site:hu -(kxht)” in MSN on January 13, 2005 and again on July 17, 2005. We had to exclude a very rare word, because Google did not support standalone searches for sites at those dates. A third round of searches were carried out on September 3, 2005, when all three engines supported queries of the type “site:.hu” (or “site:hu” for MSN). The results for a number of domains appear in Table 1. It is easy to spot the relative differences in coverage of domains between the search engines and also between the rankings of the search engines for coverage, when considering the domains one-by-one. An additional issue is the huge changes in the number of reported pages between the two data collection points, Google and MSN report much fewer Hungarian pages the second time, while Yahoo reports more than twice as many pages and this number doubled again when we searched for the third time. Google and MSN report more pages from Djibouti than from Suriname in the first two rounds, while Yahoo’s results show the opposite. Google and Yahoo seem to have caught up with MSN on the number of Canadian pages indexed by them, and by the third round Yahoo exceeds by far MSN’s coverage of Canadian pages (at least this is what is reported).
J. ~Bar-Ilan. Expectations versus reality-search engine features needed for web research at mid 2005. Cybermetrics, 9(1), 2005.
*Snyder, H. & Rosenbaum, H. (1999). Can search engines be used as tools for web-link analysis? A critical view. Journal of Documentation, 55, 375-384.
*Thelwall, M. (2000). Web impact factors and search engine coverage. Journal of Documentation, 56, 185-189.
Another problem is the non-uniformity of coverage. ''Snyder and Rosenbaum (1999)'' have shown that the even the relative coverage of major domain of different search engines is not the same. ''Thelwall (2000)'' examined the coverage of large national domains, and found that the coverage was so uneven that reasonable calculation of the Web Impact Factor (WIF, Ingwersen, 1998) was not possible based on data provided by the search engines. ''Current results show that coverage of search engines is still uneven''. We searched for “–kxht site:.hu” (without the word kxht and in the Hungarian domain) in Yahoo and Google, and “site:hu -(kxht)” in MSN on January 13, 2005 and again on July 17, 2005. We had to exclude a very rare word, because Google did not support standalone searches for sites at those dates. A third round of searches were carried out on September 3, 2005, when all three engines supported queries of the type “site:.hu” (or “site:hu” for MSN). The results for a number of domains appear in Table 1. It is easy to spot the relative differences in coverage of domains between the search engines and also between the rankings of the search engines for coverage, when considering the domains one-by-one.
Judit ~Bar-Ilan. Expectations versus reality – Search engine features needed for Web research at mid 2005. Cybermetrics. Vol. 9 (2005)
*''Snyder, H. & Rosenbaum, H. (1999). Can search engines be used as tools for web-link analysis? A critical view. Journal of Documentation, 55, 375-384''
*Thelwall, M. (2000a). Web impact factors and search engine coverage. Journal of Documentation, 56, 185-189
''An additional issue is the huge changes in the number of reported pages between the two data collection points'', Google and MSN report much fewer Hungarian pages the second time, while Yahoo reports more than twice as many pages and this number doubled again when we searched for the third time. Google and MSN report more pages from Djibouti than from Suriname in the first two rounds, while Yahoo’s results show the opposite. Google and Yahoo seem to have caught up with MSN on the number of Canadian pages indexed by them, and by the third round Yahoo exceeds by far MSN’s coverage of Canadian pages (at least this is what is reported).
Past examples of non-reliability of search engines include ~AltaVista’s results count (Notess, 2000). Rousseau (2000) recorded daily fluctuations in the number of results retrieved by ~AltaVista; these fluctuations were compared to the continuously growing number of results reported by Northern Light. ~Bar-Ilan (2000) observed huge daily fluctuations in results retrieved by Hotbot when compared with Snap, where both search tools were powered by Inktomi. ''Search engine stability over time can be measured by the set of measures proposed by ~Bar-Ilan (2002b)''.
Judit ~Bar-Ilan. Expectations versus reality – Search engine features needed for Web research at mid 2005. Cybermetrics. Vol. 9 (2005)
*Notess, G. (2000). Search engine inconsistencies. Online (March 2000). <http://www.onlinemag.net/OL2000/net3.html>
*Rousseau, R. (1999). Daily time series of common single word searches in ~AltaVista and ~NorthernLight. Cybermetrics, 2/3(1), paper 2. <http://www.cindoc.csic.es/cybermetrics/articles/v2i1p2.html>
*~Bar-Ilan, J. (2002). How Much Information Search Engines Disclose on the Links to a Web Page? – A Longitudinal Case Study of the 'Cybermetrics' Home Page. Journal of Information Science, 28(6).
Departament de Comunicació
Teléfono: +34 93 5422496
dirección: Roc Boronat, 138 08018 Barcelona
Correo: cristofol.rovira@upf.edu
web: http://www.upf.edu/depeca/
!!Docencia
* Cristòfol Rovira Fontanals es profesor de la Universidad Pompeu Fabra desde el año 1992 en el área de Biblioteconomía y Documentación.
* Imparte docencia en las titulaciones de Publicidad y Relaciones Públicas y Comunicación Audiovisual, así como en el Máster en Documentación Digital (Universidad Pompeu Fabra), Máster en Buscadores (Universidad Pompeu Fabra) y Máster Oficial en Gestión de Contenidos Digitales (Universidad de Barcelona & Universidad Pompeu Fabra)
!!Investigación
* Actualmente investiga en el desarrollo de nuevas herramientas para la evaluación automática de sedes web (~DigiDocSpider).
*Forma parte del grupo de investigación ~DigiDoc del Departamento de Comunicación (Universidad Pompeu Fabra).
*Participa en el proyecto de investigación con financiación pública competitiva "Nuevas estratégias de publicidad y promoción de las marcas turísticas españolas en la web" CSO 2008-02627
!!Formación
* Licenciado en Ciencias de la Educación por la Universidad de Barcelona (1989)
* Diplomado en Biblioteconomía y Documentación por la Universidad de Barcelona (1997)
* Ingeniero Técnico en Informática de Gestión por la Universidad Politécnica de Catalunya (1996)
* Doctor por la Universitat de Barcelona (2003)
* Técnico en diseño y creación multimedia por la Universitat Oberta de Catalunya (2005)
* Postgrado en formación de profesores en educación a distancia por la Universidad Nacional de Educación a Distancia (1997)
[[Currículum completo|http://argos.upf.edu?id=c0f06b2e5feb9df6&idioma=ca]]
<script>
document.write("<p>Helo World !!</p>")
</script>
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<!--}}}-->
* Máster en Buscadores http://www.masterenbuscadores.com
* Máster en Documentación Digital http://www.documentaciondigital.org
* Máster en Gestión de Contenidos Digitales http://bd.ub.es/gcd/
* Anuario hipertext.net http://www.hipertext.net
* Weblog Servicio de Alerta http://docdigital.typepad.com
* Universitat Pompeu Fabra http://www.upf.edu
* Proyecto de investigación I+D+I Ministerio de Ciencia e Innovación ~CSO2008-02627 http://www.marcasturisticas.com
[img[Mapa conceptual de la estructura de un buscador|estructura_de_un_buscador_6.gif]]
[img[Mapa conceptual de los indicadores para la evaluación de recursos digitales|evaluacion_recursos_2.JPG]]
!!Consistencia con grandes cantidades de sedes web
~Web-IFs have been calculated by Ingwersen [2] for web hosts and domains using advanced searches with the search engine ~AltaVista, following on from the javascript:;previous study of Almind and Ingwersen [3]. This method has been shown by Ingwersen to have some internal consistency at least for large segments of the web, but not for smaller institutional sites.
!!Problemas por falta de indexación
For the domains that are surveyed here the exciting concept of the ~Web-IF appears to be a relatively crude instrument in practice due to the limited coverage of the web by search engines.
(...)
''It seems therefore that reliable ~Web-IFs from a commercial search engine are not possible at the moment''.
The results indicate that search engine coverage, even of large national domains is extremely uneven and would be likely to lead to misleading calculations
Mike Thelwall. Journal of Documentation, vol. 56, no. 2, March 2000, pp. 185-189
* [2] Ingwersen, P. Web Impact Factors. Journal of Documentation, 54(2), 1998, 236-243.
* [3] Almind, T. C. and Ingwersen, P. Informetric analysis on the World Wide Web: methodological approaches to webometrics. Journal of Documentation, 53(4), 1997, 404-426
Past examples of non-reliability of search engines include ~AltaVista’s results count (Notess, 2000). Rousseau (2000) recorded ''daily fluctuations in the number of results retrieved by ~AltaVista''; these fluctuations were compared to the continuously growing number of results reported by Northern Light. ~Bar-Ilan (2000) observed huge daily fluctuations in results retrieved by Hotbot when compared with Snap, where both search tools were powered by Inktomi. Search engine stability over time can be measured by the set of measures proposed by ~Bar-Ilan (2002b).
J. ~Bar-Ilan. Expectations versus reality-search engine features needed for web research at mid 2005. Cybermetrics, 9(1), 2005.
*Notess, G. (2000). Search engine inconsistencies. Online (March 2000). <http://www.onlinemag.net/OL2000/net3.html>
*Rousseau, R. (1999). Daily time series of common single word searches in ~AltaVista and ~NorthernLight. Cybermetrics, 2/3(1), paper 2. <http://www.cindoc.csic.es/cybermetrics/articles/v2i1p2.html>
*~Bar-Ilan, J. (2000). Evaluating the stability of the search tools ~HotBot and Snap: A case study. Online Information Review, 24(6), 439-449.
*~Bar-Ilan, J. (2002). How Much Information Search Engines Disclose on the Links to a Web Page? – A Longitudinal Case Study of the 'Cybermetrics' Home Page. Journal of Information Science, 28(6) 455-466.
[img[fotografía de Cristòfol Rovira|http://www.cristofolrovira.com/crf_150_175.jpg]]
[img[Mapa conceptual sobre gestión de la propia información|gestion_informacion_propia_pp.PNG]]
A fundamental problem seems to be the sheer size of the web and the ''inability and perhaps understandable lack of desire of the search engines to cope with it''. The Holy Grail of indexing the entire web can be seen as a secondary goal to the task of getting the most relevant information to a general web user in response to their search query. ''For this purpose search engines use techniques to rate the relevancy of pages'' which downplay the importance of badly linked pages, under the assumption that better linked pages are more popular and more likely to be of interest.
Mike Thelwall. Journal of Documentation, vol. 56, no. 2, March 2000, pp. 185-189
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Documentation
>see [[InlineJavascriptPluginInfo]]
!!!!!Revisions
<<<
2008.06.11 [1.9.3] added $(...) function as 'shorthand' convenience syntax for document.getElementById()
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link. Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed). Thanks to Xavier Verges for suggestion and preliminary code.
|please see [[InlineJavascriptPluginInfo]] for additional revision details|
2005.11.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.InlineJavascriptPlugin= {major: 1, minor: 9, revision: 3, date: new Date(2008,6,11)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?(?: key=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var src=lookaheadMatch[1];
var label=lookaheadMatch[2];
var tip=lookaheadMatch[3];
var key=lookaheadMatch[4];
var show=lookaheadMatch[5];
var code=lookaheadMatch[6];
if (src) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = src;
document.body.appendChild(script); document.body.removeChild(script);
}
if (code) { // there is script code
if (show) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (label) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",wikifyPlainText(label));
var fixup=code.replace(/document.write\s*\(/gi,'place.bufferedHTML+=(');
link.code="function _out(place){"+fixup+"\n};_out(this);"
link.tiddler=w.tiddler;
link.onclick=function(){
this.bufferedHTML="";
try{ var r=eval(this.code);
if(this.bufferedHTML.length || (typeof(r)==="string")&&r.length)
var s=this.parentNode.insertBefore(document.createElement("span"),this.nextSibling);
if(this.bufferedHTML.length)
s.innerHTML=this.bufferedHTML;
if((typeof(r)==="string")&&r.length) {
wikify(r,s,null,this.tiddler);
return false;
} else return r!==undefined?r:false;
} catch(e){alert(e.description||e.toString());return false;}
};
link.setAttribute("title",tip||"");
var URIcode='javascript:void(eval(decodeURIComponent(%22(function(){try{';
URIcode+=encodeURIComponent(encodeURIComponent(code.replace(/\n/g,' ')));
URIcode+='}catch(e){alert(e.description||e.toString())}})()%22)))';
link.setAttribute("href",URIcode);
link.style.cursor="pointer";
if (key) link.accessKey=key.substr(0,1); // single character only
}
else { // run inline script code
var fixup=code.replace(/document.write\s*\(/gi,'place.innerHTML+=(');
var code="function _out(place){"+fixup+"\n};_out(w.output);"
try { var out=eval(code); } catch(e) { out=e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
// // Backward-compatibility for TW2.1.x and earlier
//{{{
if (typeof(wikifyPlainText)=="undefined") window.wikifyPlainText=function(text,limit,tiddler) {
if(limit > 0) text = text.substr(0,limit);
var wikifier = new Wikifier(text,formatter,null,tiddler);
return wikifier.wikifyPlain();
}
//}}}
// // $(...) function: 'shorthand' convenience syntax for document.getElementById()
//{{{
if (typeof($)=="undefined") { // avoid redefinition
function $() {
var elements=new Array();
for (var i=0; i<arguments.length; i++) {
var element=arguments[i];
if (typeof element=='string') element=document.getElementById(element);
if (arguments.length==1) return element;
elements.push(element);
}
return elements;
}
}
//}}}
/***
|Name|InlineJavascriptPluginInfo|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Documentation|http://www.TiddlyTools.com/#InlineJavascriptPluginInfo|
|Version|1.9.3|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for InlineJavascriptPlugin|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
This plugin adds wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be recognized as embedded javascript code.
<script show>
/* javascript code goes here... */
</script>Every time the tiddler content is rendered, the javascript code is automatically evaluated, allowing you to invoke 'side-effect' processing and/or produce dynamically-generated content that is then inserted into the tiddler content, immediately following the script (see below). By including the optional ''show'' keyword as the final parameter in a {{{<script>}}} marker, the plugin will also include the script source code in the output that it displays in the tiddler. This is helpful when creating examples for documentation purposes (such as used in this tiddler!)
__''Deferred execution from an 'onClick' link''__
<script label="click here" title="mouseover tooltip text" key="X" show>
/* javascript code goes here... */
alert('you clicked on the link!');
</script>
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text, and a {{{key="X"}}} parameter to specify an //access key// (which must be a //single// letter or numeric digit only).
__''Loading scripts from external source files''__
<script src="URL" show>
/* optional javascript code goes here... */
</script>You can also load javascript directly from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
In addition to loading the javascript from the external file, you can also use this feature to invoke javascript code contained within the {{{<script>...</script>}}} markers. This code is invoked //after// the external script file has been processed, and can make immediate use of the functions and/or global variables defined by the external script file.
>Note: To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that is rendered as soon as your TiddlyWiki document is opened, such as MainMenu. For example: put your {{{<script src="..."></script>}}} syntax into a separate 'library' tiddler (e.g., LoadScripts), and then add {{{<<tiddler LoadScripts>>}}} to MainMenu so that the library is loaded before any other tiddlers that rely upon the functions it defines.
>
>Normally, loading external javascript in this way does not produce any direct output, and should not have any impact on the appearance of your MainMenu. However, if your LoadScripts tiddler contains notes or other visible content, you can suppress this output by using 'inline CSS' in the MainMenu, like this: {{{@@display:none;<<tiddler LoadScripts>>@@}}}
<<<
!!!!!Creating dynamic tiddler content and accessing the ~TiddlyWiki DOM
<<<
An important difference between TiddlyWiki inline scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document: in a typical web document, you use the {{{document.write()}}} (or {{{document.writeln()}}}) function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and instead will //completely replace the entire ~TiddlyWiki document in your browser window (which is clearly not a good thing!)//. In order to allow scripts to use {{{document.write()}}}, the plugin automatically converts and buffers all HTML output so it can be safely inserted into your tiddler content, immediately following the script.
''Note that {{{document.write()}}} can only be used to output "pure HTML" syntax. To produce //wiki-formatted// output, your script should instead return a text value containing the desired wiki-syntax content'', which will then be automatically rendered immediately following the script. If returning a text value is not sufficient for your needs, the plugin also provides an automatically-defined variable, 'place', that gives the script code ''direct access to the //containing DOM element//'' into which the tiddler output is being rendered. You can use this variable to ''perform direct DOM manipulations'' that can, for example:
* generate wiki-formatted output using {{{wikify("...content...",place)}}}
* vary the script's actions based upon the DOM element in which it is embedded
* access 'tiddler-relative' DOM information using {{{story.findContainingTiddler(place)}}}
Note:
''When using an 'onclick' script, the 'place' element actually refers to the onclick //link text// itself, instead of the containing DOM element.'' This permits you to directly reference or modify the link text to reflect any 'stateful' conditions that might set by the script. To refer to the containing DOM element from within an 'onclick' script, you can use "place.parentNode" instead.
<<<
!!!!!Instant "bookmarklets"
<<<
You can also use an 'onclick' link to define a "bookmarklet": a small piece of javascript that can be ''invoked directly from the browser without having to be defined within the current document.'' This allows you to create 'stand-alone' commands that can be applied to virtually ANY TiddlyWiki document... even remotely-hosted documents that have been written by others!! To create a bookmarklet, simply define an 'onclick' script and then grab the resulting link text and drag-and-drop it onto your browser's toolbar (or right-click and use the 'bookmark this link' command to add it to the browser's menu).
Notes:
*When writing scripts intended for use as bookmarklets, due to the ~URI-encoding required by the browser, ''you cannot not use ANY double-quotes (") within the bookmarklet script code.''
*All comments embedded in the bookmarklet script must ''use the fully-delimited {{{/* ... */}}} comment syntax,'' rather than the shorter {{{//}}} comment syntax.
*Most importantly, because bookmarklets are invoked directly from the browser interface and are not embedded within the TiddlyWiki document, there is NO containing 'place' DOM element surrounding the script. As a result, ''you cannot use a bookmarklet to generate dynamic output in your document,'' and using {{{document.write()}}} or returning wiki-syntax text or making reference to the 'place' DOM element will halt the script and report a "Reference Error" when that bookmarklet is invoked.
Please see [[InstantBookmarklets]] for many examples of 'onclick' scripts that can also be used as bookmarklets.
<<<
!!!!!Special reserved function name
<<<
The plugin 'wraps' all inline javascript code inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.
<<<
!!!!!$(...) 'shorthand' function
<<<
As described by Dustin Diaz [[here|http://www.dustindiaz.com/top-ten-javascript/]], the plugin defines a 'shorthand' function that allows you to write:
{{{
$(id)
}}}
in place of the normal standard javascript syntax:
{{{
document.getElementById(id)
}}}
This function is provided merely as a convenience for javascript coders that may be familiar with this abbreviation, in order to allow them to save a few bytes when writing their own inline script code.
<<<
!!!!!Examples
<<<
simple dynamic output:
><script show>
document.write("The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).getAttribute("tiddler");
var size=store.getTiddlerText(title).length;
return title+" is using "+size+" bytes";
</script>
dynamic output from an 'onclick' script, using {{{document.write()}}} and/or {{{return "..."}}}
><script label="click here" show>
document.write("<br>The current date/time is: "+(new Date())+"<br>");
return "link to current user: [["+config.options.txtUserName+"]]\n";
</script>
creating an 'onclick' button/link that accesses the link text AND the containing tiddler:
><script label="click here" title="clicking this link will show an 'alert' box" key="H" show>
if (!window.story) window.story=window;
var txt=place.firstChild.data;
var tid=story.findContainingTiddler(place).getAttribute('tiddler');
alert('Hello World!\nlinktext='+txt+'\ntiddler='+tid);
</script>
dynamically setting onclick link text based on stateful information:
>{{block{
{{{
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.previousSibling.innerHTML=on?"disable":"enable";
</script>
}}}
<script label="click here">
/* toggle "txtSomething" value */
var on=(config.txtSomething=="ON");
place.innerHTML=on?"enable":"disable";
config.txtSomething=on?"OFF":"ON";
return "\nThe current value is: "+config.txtSomething;
</script><script>
/* initialize onclick link text based on current "txtSomething" value */
var on=(config.txtSomething=="ON");
place.lastChild.innerHTML=on?"enable":"disable";
</script>
}}}
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function inlineJavascriptDemo() { alert('Hello from demo.js!!') } }}}
>>{{{displayMessage('InlineJavascriptPlugin: demo.js has been loaded');}}}
>note: When using this example on your local system, you will need to download the external script file from the above URL and install it into the same directory as your document.
>
><script src="demo.js" show>
return "inlineJavascriptDemo() function has been defined"
</script>
><script label="click to invoke inlineJavascriptDemo()" key="D" show>
inlineJavascriptDemo();
</script>
<<<
!!!!!Revisions
<<<
2008.06.11 [1.9.3] added $(...) function as 'shorthand' convenience syntax for document.getElementById()
2008.03.03 [1.9.2] corrected declaration of wikifyPlainText() for 'TW 2.1.x compatibility fallback' (fixes Safari "parse error")
2008.02.23 [1.9.1] in onclick function, use string instead of array for 'bufferedHTML' attribute on link element (fixes IE errors)
2008.02.21 [1.9.0] 'onclick' scripts now allow returned text (or document.write() calls) to be wikified into a span that immediately follows the onclick link. Also, added default 'return false' handling if no return value provided (prevents HREF from being triggered -- return TRUE to allow HREF to be processed). Thanks to Xavier Verges for suggestion and preliminary code.
2008.02.14 [1.8.1] added backward-compatibility for use of wikifyPlainText() in TW2.1.3 and earlier
2008.01.08 [*.*.*] plugin size reduction: documentation moved to ...Info tiddler
2007.12.28 [1.8.0] added support for key="X" syntax to specify custom access key definitions
2007.12.15 [1.7.0] autogenerate URI encoded HREF on links for onclick scripts. Drag links to browser toolbar to create bookmarklets. IMPORTANT NOTE: place is NOT defined when scripts are used as bookmarklets. In addition, double-quotes will cause syntax errors. Thanks to PaulReiber for debugging and brainstorming.
2007.11.26 [1.6.2] when converting "document.write()" function calls in inline code, allow whitespace between "write" and "(" so that "document.write ( foobar )" is properly converted.
2007.11.16 [1.6.1] when rendering "onclick scripts", pass label text through wikifyPlainText() to parse any embedded wiki-syntax to enable use of HTML entities or even TW macros to generate dynamic label text.
2007.02.19 [1.6.0] added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
2006.10.16 [1.5.2] add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
2006.06.01 [1.5.1] when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
2006.04.19 [1.5.0] added 'show' parameter to force display of javascript source code in tiddler output
2006.01.05 [1.4.0] added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
2005.12.13 [1.3.1] when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
2005.11.09 [1.3.0] for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
2005.11.08 [1.2.0] handle loading of javascript from an external URL via src="..." syntax
2005.11.08 [1.1.0] pass 'place' param into scripts to provide direct DOM access
2005.11.08 [1.0.0] initial release
<<<
[img[Mapa conceptual de los instrumentos de búsqueda en Internet|instrumentos_de_busqueda.gif]]
[[Sumario]]
[[Currículum]]
[[Publicaciones]]
[[Webs creadas]]
[[Fotografías]]
[[Materiales didácticos]]
[[Enlaces]]
[[Contacto]]
[[RSS]]
* [[Web 2.0 para periodistas]]
* MásterEnTraducciónCientíficotécnica
* Máster en Documentación Digital http://www.documentaciondigital.org
* Máster en Buscadores http://www.masterenbuscadores.com
* Máster en Gestión de Contenidos Digitales http://bd.ub.es/gcd/
!Motores de búsqueda y acceso a bases de datos
!!! Recursos digitales
* Presentación sobre buscadores, directorios y otros recursos de búsqueda para traductores http://www.hipertext.net/temp/instrumentos_de_busqueda.odp http://www.hipertext.net/temp/instrumentos_de_busqueda.ppt
* Mari Vállez. Buscadores. http://www.hipertext.net/dat/docum/Tema_2.doc
* Mari Vállez. Recursos-e especializados para traductores e intérpretes: bases de datos y revistas académicas. http://www.hipertext.net/dat/docum/Tema_4.doc
* Mari Vállez. Recursos-e para lexicografía. http://www.hipertext.net/dat/docum/Tema_6.doc
* InstrumentosBúsqueda
* RecursosParaTraductores
* Lluís Codina. Motores de búsqueda de información científica y académica. "Hipertext.net", núm. 5, 2007. http://www.hipertext.net/web/pag273.htm
* Mari Carmen Marcos. Internet invisible allí donde no llegan los buscadores. En Cristòfol Rovira; Lluís Codina (dir.)Documentación digital. Barcelona: Área de Ciencias de la Documentación. Departamento de Comunicación. Universidad Pompeu Fabra, 2007. http://www.masterenbuscadores.com/modulo3mbu/pag310_print.htm
* Lluís Codina. Estructura y funciones de un motor de búsqueda [en linea]. En Cristòfol Rovira; Lluís Codina (dir.) Documentación digital. Barcelona: Área de Ciencias de la Documentación. Departamento de Comunicación. Universidad Pompeu Fabra, 2007. http://www.masterenbuscadores.com/modulo1mbu/pag103_print.htm
* EstructuraBuscador
!!! Evaluación de recursos
* Mari Vállez. Evaluación de recursos de información. http://www.hipertext.net/dat/docum/Tema_7.doc
* Cristòfol Rovira. Análisis y evaluación automática de sitios web. En Cristòfol Rovira; Lluís Codina (dir.). Documentación digital. Barcelona: Área de Ciencias de la Documentación. Departamento de Periodismo y de Comunicación Audiovisual. Universidad Pompeu Fabra, 2007. http://www.hipertext.net/modulo1ndd/pag2074_print.htm
* EvaluaciónDeRecursos
!!! Instrumentos
* Mari Vállez. Técnicas de búsqueda de información. http://www.hipertext.net/dat/docum/Tema_3.doc
* BúsquedaAvanzada
* BuenasBúsquedas
* OptimizarBúsquedas
* Mari Vállez. Web 2.0. http://www.hipertext.net/dat/docum/Tema_8.doc
* Mari Vállez. Gestión de la información electrónica propia. http://www.hipertext.net/dat/docum/Tema_5.doc
* GestiónInformaciónPropia
* Editor de Wiki http://www.tiddlywiki.com/
* Creación de un buscador temático http://www.masterenbuscadores.com/modulo5mbu/pag536_print.htm
* Editor Mapas conceptuales http://www.hipertext.net/modulo7ndd/pag7015_print.htm
* Gestor de referencias bibliográficas (código de grupo RWUPF)https://www.refworks.com/RWSingle/login.asp?WNCLang=false
* Gestor de información sindicada (rss) http://www.masterenbuscadores.com/modulo4mbu/pag428_print.htm
* Gestión de favoritos http://www.masterenbuscadores.com/modulo6mbu/pag604_print.htm
* Wikis http://www.hipertext.net/temp/wikis_.odp http://www.hipertext.net/temp/wikis_.ppt
*http://tiddlywiki.org/wiki/Multi-Line_Contents
Unfortunately search engines do not always report problems. For example, ~Bar-Ilan (2002) has showed that ''Google does not report the actual number of link pages to a given site that are indexed by it''. Only recently has Google admitted this (Searchenginewatch forum, 2004). Even when the search engines receive explicit questions they do not always bother to give satisfactory answers, as was the case with Hotbot (~Bar-Ilan, 2000). Sometimes pressure placed on the search engines through search engine/webmasters forums result in getting more explicit answers. Search engines do not report why they do not retrieve documents indexed by them for some queries where these documents should definitely appear (Mettrop & Nieuwenhuysen, 2001). Consider, for example the query link:www.umu.se/inforsk/ISSI2005/ at Google. ''It produced 11 results'' (10 displayed) (see Figure 2) on August 29, 2005. The corresponding query at Yahoo, link:http://www.umu.se/inforsk/ISSI2005/, ''produced 96 results'' (95 shown). The second and third results (we wanted to pickup at least two ~URLs to cover for the undisplayed result) on Yahoo’s page (see Figure 3) are both indexed by Google (see Figures 4 and 5, fot the cached versions of these pages by Google, that clearly show the link to the ISSI 2005 website.
J. ~Bar-Ilan. Expectations versus reality-search engine features needed for web research at mid 2005. Cybermetrics, 9(1), 2005
*~Bar-Ilan, J. (2002). How Much Information Search Engines Disclose on the Links to a Web Page? – A Longitudinal Case Study of the 'Cybermetrics' Home Page. Journal of Information Science, 28(6) 455-466.
*Mettrop, W., & Nieuwenhuysen, P. (2001). Internet search engines - fluctuations in document accessibility. Journal of Documentation, 57(5), 623-651.
*~Bar-Ilan, J. (2000). Evaluating the stability of the search tools ~HotBot and Snap: A case study. Online Information Review, 24(6), 439-449.
One reason for the problematic numbers reported by Yahoo or Google could be that since the number of results is clearly higher than the number of documents displayed, ''the numbers are only rough approximations''
Judit ~Bar-Ilan. Expectations versus reality – Search engine features needed for Web research at mid 2005. Cybermetrics. Vol. 9 (2005)
[img[Mapa conceptual sobre estrategias para la optimización de búsquedas|optimizar_busquedas_.png]]
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<br> <br>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
</div>
<br><br><br>
<!--}}}-->
Rovira, Cristòfol; Codina, Lluís; Marcos, ~Mari-Carmen (2009). Cómo contratar un servicio de posicionamiento Web. El Profesional de la información; 18(2): 229-236.
Pedraza, Rafael; Codina, Lluís; Rovira, Cristòfol. (2008). Semantic Web adoption: online tools for web evaluation and metadata extraction. En Da Ruan et al. (ed) Computational Intelligence In Decision And Control. Proceedings Of The 8Th International Flins Conferenc New Jersey: World Scientific Publishing Co Pte Ltd, 2008. ISI Document Delivery No.: ~BIF16
Codina, Lluís; Rovira, Cristòfol. (2008) ~OpenOffice y el formato ~OpenDocument: funciones y compatibilidad. El Profesional de la información 2008; 17(4). ISI Document Delivery No.: 335MS
Cristòfol Rovira (2008) Datos numéricos en los listados de resultados de los buscadores en ~ThinkEPI 2. Barcelona: El Profesional de la Información http://www.thinkepi.net/repositorio/
~Pedraza-Jiménez, Rafael; Codina, Lluís; Rovira, Cristòfol (2007). Web semántica y ontologías en el procesamiento de la información documental. El Profesional de la información 2007; 16(6): 569-578. ISI Document Delivery No.: 244WW
Cristòfol Rovira (2007) El editor de mapas conceptuales ~DigiDocMap. Investigación Bibliotecológica; 21(42): 65-78. http://www.ejournal.unam.mx/ibi/vol21-42/IBI002104204.pdf. ISI Document Delivery No.: 342LZ
Rovira, Cristòfol; Marcos, ~Mari-Carmen; Codina, Lluís (2007). Repositorios de publicaciones digitales de libre acceso en Europa: análisis y valoración de la accesibilidad, posicionamiento web y calidad del código. El profesional de la información; 16(1): 24-38. ISI Document Delivery No.: 141QG
Rovira Fontanals, Cristòfol (2007). Anàlisi de llocs web de televisions en català. ~BiD: textos universitaris de biblioteconomia i documentació; 18. http://www2.ub.edu/bid/consulta_articulos.php?fichero=18rovir3.htm
Rovira, Cristòfol; ~Mari-Carmen Marcos (2006). Metadatos en revistas-e de Documentación de libre acceso. El profesional de la información; 15(2): 136-143. ISI Document Delivery No.: 025UF
Codina, Lluís; Rovira, Cristòfol (2006). Recursos sobre la Web Semántica. Revista española de documentación científica; 26(2): 297-305. http://www.cindoc.csic.es/redc/redc.html
Marcos, ~Mari-Carmen; Rovira, Cristòfol (2006). Las webs parlamentarias: funciones y elementos de su interfaz en el acceso a la información. Revista española de documentación científica; 29(1): 13-35.
Rovira, Cristòfol; Codina, Lluís (2006). Sistemas de navegación con menús desplegables: componentes y edición en línea. Revista española de documentación científica; 29(1): 74-89
Codina, Lluís; Rovira, Cristòfol (2006). "Web Semántica: visión global y análisis comparativo. Tendencias en documentación digital". Gijón: Trea. http://eprints.rclis.org/archive/00008637/
Monistrol, Ricard; Rovira, Cristòfol; Codina, Lluís (2006). Sitios Web de museos de Cataluña: Análisis y propuesta de evaluación. Hipertext.net; 4.http://www.hipertext.net/web/pag266.htm
Rovira, Cristòfol ; Mesa Lao, Bartolomé (2006). Análisis comparativo de editores de mapas conceptuales de uso libre. ~BiD: textos universitaris de biblioteconomia i documentació; 16. http://www2.ub.edu/bid/consulta_articulos.php?fichero=16rovir2.htm
Rovira, Cristòfol; Marcos, ~Mari-Carmen (2006). "Posicionamiento en buscadores de blogs de Interacción ~Persona-Ordenador y usabilidad" en Interacción 2006: VII Congreso Internacional de Interacción ~Persona-Ordenador. Puertollano (Ciudad Real): Comité de Organización del VII Congreso Internacional de Interacción ~Persona-Ordenador (INTERACCIÓN’2006) http://chico2.inf-cr.uclm.es/i2006/
Marcos Mora, ~Mari-Carmen; Rovira Fontanals, Cristòfol (2005). "Evaluación de la usabilidad en sistemas de información web municipales: metodología de análisis y desarrollo" en La Dimensió humana de l'organització del coneixement : La dimensión humana de la organización del conocimiento :7º Congreso del Capítulo Español de ISKO (Barcelona, 6-8 de julio de 2005). Barcelona: Universitat de Barcelona. Departament de Biblioteconomia i Documentació. Pág. 415-432
Rovira, Cristòfol (2005). El editor de mapas conceptuales ~DigiDocMap y la norma Topic Maps. Hipertext.ne;3. http://www.hipertext.net/web/pag261.htm
Rovira, Cristòfol; Marcos, ~Mari-Carmen (2004). "Mapas conceptuales de navegación. La representación del conocimiento y el acceso a la información en entornos virtuales de aprendizaje" en III Congrès Internacional de Docència Universitària i Innovació. Girona: Universitat de Girona
Rovira, Cristòfol; Codina, Lluís; Marcos, ~Mari-Carmen (2004). Master online en documentación digital: la experiencia de siete años de formación online. El profesional de la información; 13(5): 393 - 396.
Rovira, Cristòfol; Codina, Lluís (2003). La orientación a objetos en el diseño de sedes web: hipertextos y representación de la información. Revista española de documentación científica 26(3): 267-290.
Rovira, Cristòfol (2003). Un solo menú para toda la web. Hipertext.net; 1. http://www.hipertext.net/web/pag204.htm
Rovira, Cristòfol (2003). "Modelatge Abstracte Interdisciplinar de l’Hipertext per a l’~Ensenyament-Aprenentatge (MAIDHEA)" en Anuari de Biblioteconomia i Documentació. Barcelona: Col·legi Oficial de ~Bibliotecaris-Documentalistes de Catalunya
Rovira, Cristòfol (2002). Estructuras de navegación para e-learning. El profesional de la información 1(6) http://taylorandfrancis.metapress.com/link.asp?id=105302
Rovira, Cristòfol (2002). Hypertext representation for education and learning. Interactive Educational Multimedia (5). Barcelona: ICE. Universitat de Barcelona
Rovira, Cristòfol (2002). Menú desplegable con un formulario Select. Hipertext.net; 1. http://www.hipertext.net/web/pag112.htm
Feed de www.cristofolrovira.com en [[RSS|http://www.cristofolrovira.com/index.xml]]
[img[Mapa conceptual de los principales recursos digitales para traductores|recursos_para_traductores.PNG]]
/***
|Name|SearchOptionsPlugin|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.search, TiddlyWiki.prototype.search, config.macros.search.onKeyPress|
|Options|##Configuration|
|Description|extend core search function with additional user-configurable options|
Adds extra options to core search function including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddlers'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Documentation
>see [[SearchOptionsPluginInfo]]
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
<<option chkSearchList>> Show list of matches
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler
<<option chkSearchTitlesFirst>> Show title matches first
<<option chkSearchByDate>> Sort matching tiddlers by modification date (most recent first)
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with:
{{editor{<<option txtSearchExcludeTags>>}}}
<<<
!!!!!Revisions
<<<
2008.10.14 [3.0.1] changed panel class from "tiddler" to "searchPanel" and added style definition for "searchPanel". Fixes ticket #771 (in IE, links from search results were reporting errors due to "fake" tiddler class wrapper)
|please see [[SearchOptionsPluginInfo]] for additional revision details|
2005.10.18 [1.0.0] Initial Release
<<<
!!!!!Code
***/
//{{{
version.extensions.SearchOptionsPlugin= {major: 3, minor: 0, revision: 1, date: new Date(2008,10,14)};
var co=config.options; // abbrev
if (co.chkSearchTitles===undefined) co.chkSearchTitles=true;
if (co.chkSearchText===undefined) co.chkSearchText=true;
if (co.chkSearchTags===undefined) co.chkSearchTags=true;
if (co.chkSearchFields===undefined) co.chkSearchFields=true;
if (co.chkSearchTitlesFirst===undefined) co.chkSearchTitlesFirst=true;
if (co.chkSearchList===undefined) co.chkSearchList=true;
if (co.chkSearchListTiddler===undefined) co.chkSearchListTiddler=false;
if (co.chkSearchByDate===undefined) co.chkSearchByDate=false;
if (co.chkIncrementalSearch===undefined) co.chkIncrementalSearch=true;
if (co.chkSearchShadows===undefined) co.chkSearchShadows=true;
if (co.txtIncrementalSearchDelay===undefined) co.txtIncrementalSearchDelay=500;
if (co.txtIncrementalSearchMin===undefined) co.txtIncrementalSearchMin=3;
if (co.chkSearchExcludeTags===undefined) co.chkSearchExcludeTags=true;
if (co.txtSearchExcludeTags===undefined) co.txtSearchExcludeTags="excludeSearch";
if (config.macros.search.reportTitle==undefined)
config.macros.search.reportTitle="SearchResults"; // note: not a cookie!
config.macros.search.label+="\xa0"; // a little bit of space just because it looks better
//}}}
// // searchLink: {{{[search[text to find]] OR [search[text to display|text to find]]}}}
//{{{
config.formatters.push( {
name: "searchLink",
match: "\\[search\\[",
lookaheadRegExp: /\[search\[(.*?)(?:\|(.*?))?\]\]/mg,
prompt: "search for: '%0'",
handler: function(w)
{
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source);
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
var label=lookaheadMatch[1];
var text=lookaheadMatch[2]||label;
var prompt=this.prompt.format([text]);
var btn=createTiddlyButton(w.output,label,prompt,
function(){story.search(this.getAttribute("searchText"))},"searchLink");
btn.setAttribute("searchText",text);
w.nextMatch = this.lookaheadRegExp.lastIndex;
}
}
});
//}}}
// // incremental search uses option settings instead of hard-coded delay and minimum input values
//{{{
var fn=config.macros.search.onKeyPress;
fn=fn.toString().replace(/500/g, "config.options.txtIncrementalSearchDelay||500");
fn=fn.toString().replace(/> 2/g, ">=(config.options.txtIncrementalSearchMin||3)");
eval("config.macros.search.onKeyPress="+fn);
//}}}
// // REPLACE story.search() for option to "show search results in a list"
//{{{
Story.prototype.search = function(text,useCaseSensitive,useRegExp)
{
var co=config.options; // abbrev
highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");
var matches = store.search(highlightHack,co.chkSearchByDate?"modified":"title","");
if (co.chkSearchByDate) matches=matches.reverse(); // most recent first
var q = useRegExp ? "/" : "'";
clearMessage();
if (!matches.length) {
if (co.chkSearchListTiddler) discardSearchResults();
displayMessage(config.macros.search.failureMsg.format([q+text+q]));
} else {
if (co.chkSearchList||co.chkSearchListTiddler)
reportSearchResults(text,matches);
else {
var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);
this.closeAllTiddlers(); story.displayTiddlers(null,titles);
displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));
}
}
highlightHack = null;
}
//}}}
// // REPLACE store.search() for enhanced searching/sorting options
//{{{
TiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)
{
var co=config.options; // abbrev
var tids = this.reverseLookup("tags",excludeTag,false,sortField);
// eliminate tiddlers tagged with excluded tags
if (co.chkSearchExcludeTags&&co.txtSearchExcludeTags.length) {
var ex=co.txtSearchExcludeTags.readBracketedList();
var temp=[]; for(var t=tids.length-1; t>=0; t--)
if (!tids[t].tags.containsAny(ex)) temp.push(tids[t]);
tids=temp;
}
// scan for matching titles first...
var results = [];
if (co.chkSearchTitles) {
for(var t=0; t<tids.length; t++)
if(tids[t].title.search(searchRegExp)!=-1)
results.push(tids[t]);
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((t.search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.push((new Tiddler()).assign(t,config.shadowTiddlers[t]));
}
// then scan for matching text, tags, or field data
for(var t=0; t<tids.length; t++) {
if (co.chkSearchText && tids[t].text.search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchTags && tids[t].tags.join(" ").search(searchRegExp)!=-1)
results.pushUnique(tids[t]);
if (co.chkSearchFields && store.forEachField!=undefined)
store.forEachField(tids[t],
function(tid,field,val) {
if (val.search(searchRegExp)!=-1) results.pushUnique(tids[t]);
},
true); // extended fields only
}
// then check for matching text in shadows
if (co.chkSearchShadows)
for (var t in config.shadowTiddlers)
if ((config.shadowTiddlers[t].search(searchRegExp)!=-1) && !store.tiddlerExists(t))
results.pushUnique((new Tiddler()).assign(t,config.shadowTiddlers[t]));
// if not 'titles first', or sorting by modification date,
// re-sort results to so titles, text, tag and field matches are mixed together
if(!sortField) sortField = "title";
var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }
if (!co.chkSearchTitlesFirst || co.chkSearchByDate) results.sort(bySortField);
return results;
}
//}}}
// // HIJACK core {{{<<search>>}}} macro to add "report" and "simple inline" output
//{{{
config.macros.search.SOP_handler=config.macros.search.handler;
config.macros.search.handler = function(place,macroName,params)
{
// if "report", use SearchOptionsPlugin report generator for inline output
if (params[1]&¶ms[1].substr(0,6)=="report") {
var keyword=params[0];
var options=params[1].split("=")[1]; // split "report=option+option+..."
var heading=params[2]?params[2].unescapeLineBreaks():"";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) wikify(heading+window.formatSearchResults(keyword,matches,options),place);
} else if (params[1]) {
var keyword=params[0];
var heading=params[1]?params[1].unescapeLineBreaks():"";
var seperator=params[2]?params[2].unescapeLineBreaks():", ";
var matches=store.search(new RegExp(keyword.escapeRegExp(),"img"),"title","excludeSearch");
if (matches.length) {
var out=[];
for (var m=0; m<matches.length; m++) out.push("[["+matches[m].title+"]]");
wikify(heading+out.join(seperator),place);
}
} else
config.macros.search.SOP_handler.apply(this,arguments);
};
//}}}
// // SearchResults panel handling
//{{{
setStylesheet(".searchResults { padding:1em 1em 0 1em; }","searchResults"); // matches std tiddler padding
config.macros.search.createPanel=function(text,matches,body) {
function getByClass(e,c) { var d=e.getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],c)) return d[i]; }
var panel=createTiddlyElement(null,"div","searchPanel","searchPanel");
this.renderPanel(panel,text,matches,body);
var oldpanel=document.getElementById("searchPanel");
if (!oldpanel) { // insert new panel just above tiddlers
var da=document.getElementById("displayArea");
da.insertBefore(panel,da.firstChild);
} else { // if panel exists
var oldwrap=getByClass(oldpanel,"searchResults");
var newwrap=getByClass(panel,"searchResults");
// if no prior content, just insert new content
if (!oldwrap) oldpanel.insertBefore(newwrap,null);
else { // swap search results content but leave containing panel intact
oldwrap.style.display='block'; // unfold wrapper if needed
var i=oldwrap.getElementsByTagName("input")[0]; // get input field
if (i) { var pos=this.getCursorPos(i); i.onblur=null; } // get cursor pos, ignore blur
oldpanel.replaceChild(newwrap,oldwrap);
panel=oldpanel; // use existing panel
}
}
this.showPanel(true,pos);
return panel;
}
config.macros.search.renderPanel=function(panel,text,matches,body) {
var wrap=createTiddlyElement(panel,"div",null,"searchResults");
wrap.onmouseover = function(e){ addClass(this,"selected"); }
wrap.onmouseout = function(e){ removeClass(this,"selected"); }
// create toolbar: "open all", "fold/unfold", "close"
var tb=createTiddlyElement(wrap,"div",null,"toolbar");
var b=createTiddlyButton(tb, "open all", "open all matching tiddlers", function() {
story.displayTiddlers(null,this.getAttribute("list").readBracketedList()); return false; },"button");
var list=""; for(var t=0;t<matches.length;t++) list+='[['+matches[t].title+']] ';
b.setAttribute("list",list);
var b=createTiddlyButton(tb, "fold", "toggle display of search results", function() {
config.macros.search.foldPanel(this); return false; },"button");
var b=createTiddlyButton(tb, "close", "dismiss search results", function() {
config.macros.search.showPanel(false); return false; },"button");
createTiddlyText(createTiddlyElement(wrap,"div",null,"title"),"Search for: "+text); // title
wikify(body,createTiddlyElement(wrap,"div",null,"viewer")); // report
return panel;
}
config.macros.search.showPanel=function(show,pos) {
var panel=document.getElementById("searchPanel");
var i=panel.getElementsByTagName("input")[0];
i.onfocus=show?function(){config.macros.search.stayFocused(true);}:null;
i.onblur=show?function(){config.macros.search.stayFocused(false);}:null;
if (show && panel.style.display=="block") { // if shown, grab focus, restore cursor
if (i&&this.stayFocused()) { i.focus(); this.setCursorPos(i,pos); }
return;
}
if(!config.options.chkAnimate) {
panel.style.display=show?"block":"none";
if (!show) { removeChildren(panel); config.macros.search.stayFocused(false); }
} else {
var s=new Slider(panel,show,false,show?"none":"children");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
return panel;
}
config.macros.search.foldPanel=function(button) {
var d=document.getElementById("searchPanel").getElementsByTagName("div");
for (var i=0;i<d.length;i++) if (hasClass(d[i],"viewer")) var v=d[i]; if (!v) return;
var show=v.style.display=="none";
if(!config.options.chkAnimate)
v.style.display=show?"block":"none";
else {
var s=new Slider(v,show,false,"none");
s.callback=function(e,p){e.style.overflow="visible";}
anim.startAnimating(s);
}
button.innerHTML=show?"fold":"unfold";
return false;
}
config.macros.search.stayFocused=function(keep) { // TRUE/FALSE=set value, no args=get value
if (keep===undefined) return this.keepReportInFocus;
this.keepReportInFocus=keep;
return keep
}
config.macros.search.getCursorPos=function(i) {
var s=0; var e=0; if (!i) return { start:s, end:e };
try {
if (i.setSelectionRange) // FF
{ s=i.selectionStart; e=i.selectionEnd; }
if (document.selection && document.selection.createRange) { // IE
var r=document.selection.createRange().duplicate();
var len=r.text.length; s=0-r.moveStart('character',-100000); e=s+len;
}
}catch(e){};
return { start:s, end:e };
}
config.macros.search.setCursorPos=function(i,pos) {
if (!i||!pos) return; var s=pos.start; var e=pos.end;
if (i.setSelectionRange) //FF
i.setSelectionRange(s,e);
if (i.createTextRange) // IE
{ var r=i.createTextRange(); r.collapse(true); r.moveStart("character",s); r.select(); }
}
//}}}
// // SearchResults report generation
// note: these functions are defined globally, so they can be more easily redefined to customize report formats//
//{{{
if (!window.reportSearchResults) window.reportSearchResults=function(text,matches)
{
var cms=config.macros.search; // abbrev
var body=window.formatSearchResults(text,matches);
if (!config.options.chkSearchListTiddler) // show #searchResults panel
window.scrollTo(0,ensureVisible(cms.createPanel(text,matches,body)));
else { // write [[SearchResults]] tiddler
var title=cms.reportTitle;
var who=config.options.txtUserName;
var when=new Date();
var tags="excludeLists excludeSearch temporary";
var tid=store.getTiddler(title); if (!tid) tid=new Tiddler();
tid.set(title,body,who,when,tags);
store.addTiddler(tid);
story.closeTiddler(title);
story.displayTiddler(null,title);
}
}
if (!window.formatSearchResults) window.formatSearchResults=function(text,matches,opt)
{
var body='';
var title=config.macros.search.reportTitle
var q = config.options.chkRegExpSearch ? "/" : "'";
if (!opt) var opt="all";
var parts=opt.split("+");
for (var i=0; i<parts.length; i++) { var p=parts[i].toLowerCase();
if (p=="again"||p=="all") body+=window.formatSearchResults_again(text,matches);
if (p=="summary"||p=="all") body+=window.formatSearchResults_summary(text,matches);
if (p=="list"||p=="all") body+=window.formatSearchResults_list(text,matches);
if (p=="buttons"||p=="all") body+=window.formatSearchResults_buttons(text,matches);
}
return body;
}
if (!window.formatSearchResults_again) window.formatSearchResults_again=function(text,matches)
{
var title=config.macros.search.reportTitle
var body='';
// search again
body+='{{span{<<search "'+text.replace(/"/g,'"')+'">> /%\n';
body+='%/<html><input type="button" value="search again"';
body+=' onclick="var t=this.parentNode.parentNode.getElementsByTagName(\'input\')[0];';
body+=' config.macros.search.doSearch(t); return false;">';
body+=' <a href="javascript:;" onclick="';
body+=' var e=this.parentNode.nextSibling;';
body+=' var show=e.style.display!=\'block\';';
body+=' if(!config.options.chkAnimate) e.style.display=show?\'block\':\'none\';';
body+=' else anim.startAnimating(new Slider(e,show,false,\'none\'));';
body+=' return false;">options...</a>';
body+='</html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%\n';
body+=' %/<<option chkSearchTitles>>titles /%\n';
body+=' %/<<option chkSearchText>>text /%\n';
body+=' %/<<option chkSearchTags>>tags /%\n';
body+=' %/<<option chkSearchFields>>fields /%\n';
body+=' %/<<option chkSearchShadows>>shadows\n';
body+=' <<option chkCaseSensitiveSearch>>case-sensitive /%\n';
body+=' %/<<option chkRegExpSearch>>text patterns /%\n';
body+=' %/<<option chkSearchByDate>>sorted by date\n';
body+=' <<option chkIncrementalSearch>>incremental key-by-key search: /%\n';
body+=' %/{{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, /%\n';
body+=' %/{{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay\n';
body+=' <<option chkSearchExcludeTags>>exclude tiddlers tagged with:\n';
body+=' {{editor{<<option txtSearchExcludeTags>>}}}/%\n';
body+='%/@@}}}\n\n';
return body;
}
if (!window.formatSearchResults_summary) window.formatSearchResults_summary=function(text,matches)
{
// summary: nn tiddlers found matching '...', options used
var body='';
var co=config.options; // abbrev
var title=config.macros.search.reportTitle
var q = co.chkRegExpSearch ? "/" : "'";
body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\n";
var opts=[];
if (co.chkSearchTitles) opts.push("titles");
if (co.chkSearchText) opts.push("text");
if (co.chkSearchTags) opts.push("tags");
if (co.chkSearchFields) opts.push("fields");
if (co.chkSearchShadows) opts.push("shadows");
body+="~~ searched in "+opts.join(" + ")+"~~\n";
body+=(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"^^ using ":"")
+(co.chkCaseSensitiveSearch?"case-sensitive ":"")
+(co.chkRegExpSearch?"pattern ":"")
+(co.chkCaseSensitiveSearch||co.chkRegExpSearch?"matching^^\n":"");
return body;
}
if (!window.formatSearchResults_list) window.formatSearchResults_list=function(text,matches)
{
// bullet list of links to matching tiddlers
var body='';
for(var t=0;t<matches.length;t++) {
var date=config.options.chkSearchByDate?(matches[t].modified.formatString('YYYY.0MM.0DD 0hh:0mm')+" "):"";
body+="* "+date+"[["+matches[t].title+"]]\n";
}
return body;
}
if (!window.formatSearchResults_buttons) window.formatSearchResults_buttons=function(text,matches)
{
// embed buttons only if writing SearchResults to tiddler
if (!config.options.chkSearchListTiddler) return "";
// "open all" button
var title=config.macros.search.reportTitle;
var body="";
body+="@@diplay:block;<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"story.displayTiddlers(null,[";
for(var t=0;t<matches.length;t++)
body+="'"+matches[t].title.replace(/\'/mg,"\\'")+"'"+((t<matches.length-1)?", ":"");
body+="],1);\" accesskey=\"O\" value=\"open all matching tiddlers\"></html> ";
// "discard SearchResults" button
body+="<html><input type=\"button\" href=\"javascript:;\" "
+"onclick=\"discardSearchResults()\" value=\"discard "+title+"\"></html>";
body+="@@\n";
return body;
}
if (!window.discardSearchResults) window.discardSearchResults=function()
{
// remove the tiddler
story.closeTiddler(config.macros.search.reportTitle);
store.deleteTiddler(config.macros.search.reportTitle);
store.notify(config.macros.search.reportTitle,true);
}
//}}}
/***
|Name|SearchOptionsPluginInfo|
|Source|http://www.TiddlyTools.com/#SearchOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#SearchOptionsPluginInfo|
|Version|3.0.1|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <br>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|documentation|
|Requires||
|Overrides||
|Description|Documentation for SearchOptionsPlugin|
Extend core search function with additional user-configurable options including selecting which data items to search, enabling/disabling incremental key-by-key searches, and generating a ''list of matching tiddler'' instead of immediately displaying all matches. This plugin also adds syntax for rendering 'search links' within tiddler content to embed one-click searches using pre-defined 'hard-coded' search terms.
!!!!!Search link Syntax
<<<
To insert a 'search link' into tiddler content, you can write:
{{{
[search[text to find]]
}}}
or
{{{
[search[text to display|text to find]]
}}}
Clicking on the resulting search link will trigger the search functionality, just as if the specified 'text to find' had been entered into the standard search input field usually displayed in the document sidebar.
<<<
!!!!!Inline output: search macro syntax
<<<
Alternatively, to embed search results lists directly into your tiddler content, you can use:
{{{
<<search "text" report>> (report is a literal keyword)
<<search "text" "heading" "separator">> (simple inline generator)
}}}
<<<
!!!!!Inline output examples:
<<<
*+++*[<<search "wood">>]>...
<<search "wood">>
===
*+++*[<<search "wood" "/%%/">>]>...
<<search "wood" "/%%/">>
===
*+++*[<<search "wood" "See also: ">>]>...
<<search "wood" "See also: ">>
===
*+++*[<<search "wood" "See also:\n*" "\n*">>]>...
<<search "wood" "See also:\n*" "\n*">>
===
*+++*[<<search "wood" report=list "See also:">>]>...
<<search "wood" report=list "See Also:" >>
===
*+++*[<<search "wood" report>>]>...
<<search "wood" report>>
===
*+++*[<<search "wood" report=>>]>...
<<search "wood" report=>>
===
*+++*[<<search "wood" report=all>>]>...
<<search "wood" report=all>>
===
*+++*[<<search "wood" report=summary+buttons+again+list>>]>...
<<search "wood" report=summary+buttons+again+list>>
===
*+++*[<<search "wood" report=summary+again>>]>...
<<search "wood" report=summary+again>>
===
*+++*[<<search "wood" report=summary>>]>...
<<search "wood" report=summary>>
===
<<<
!!!!!Configuration
<<<
Search in:
<<option chkSearchTitles>> titles <<option chkSearchText>> text <<option chkSearchTags>> tags <<option chkSearchFields>> fields <<option chkSearchShadows>> shadows
{{{<<option chkSearchTitles>> <<option chkSearchText>> <<option chkSearchTags>>}}}
{{{<<option chkSearchFields>> <<option chkSearchShadows>>}}}
<<option chkSearchList>> Show list of matches {{{(<<option chkSearchList>>)}}}
<<option chkSearchListTiddler>> Write list to [[SearchResults]] tiddler {{{(<<option chkSearchListTiddler>>)}}}
<<option chkSearchTitlesFirst>> Show title matches first {{{(<<option chkSearchTitlesFirst>>)}}}
<<option chkSearchByDate>> Sort matching tiddlers by date {{{(<<option chkSearchByDate>>)}}}
<<option chkIncrementalSearch>> Incremental key-by-key search: {{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, {{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
{{{<<option chkSearchIncremental>> <<option txtSearchIncrementalMin>> <<option txtSearchIncrementalDelay>>}}}
<<option chkSearchExcludeTags>> Exclude tiddlers tagged with: {{{<<option chkSearchExcludeTags>>}}}
{{editor{<<option txtSearchExcludeTags>>}}}{{{<<option txtSearchExcludeTags>>}}}
<<<
!!!!!Revisions
<<<
2008.10.14 [3.0.1] changed panel class from "tiddler" to "searchPanel" and added style definition for "searchPanel". Fixes ticket #771 (in IE, links from search results were reporting errors due to "fake" tiddler class wrapper)
2008.10.02 [3.0.0] added optional list of tags to use for excluding tiddler from searches (default="excludeLists").
2008.09.24 [2.9.9] performance improvment to reportSearchResults(): when rendering a real SearchResults tiddler, store.notify() isn't needed since the results tiddler is always explicitly closed and redrawn each time.
2008.09.20 [2.9.8] corrected createPanel() and renderPanel() so toolbar will be correctly shown/hidden on mouseover/mouseout.
2008.09.19 [2.9.7] fixes to panel handling for IE, Safari, and others. Changed panel id to #searchPanel and added .searchResults CSS class wrapper around panel content. Fixed fold/unfold handling.
2008.09.18 [2.9.6] refactored panel handling code, added 'fold/unfold' panel toolbar command, added dynamic 'title' (shows search term), added txtIncrementalSearchMin option
2008.09.17 [2.9.5] added focus and cursor handling for 'search again' field in #searchResults DIV report so that an incremental key-by-key search doesn't interfere with continuous typing into the field.
2008.09.17 [2.9.4] fix 'flicker' when updating #searchResults DIV by wikify()ing to an 'offscreen' DIV and then using replaceChild() instead of using removeChildren() followed by wikify()
2008.09.16 [2.9.3] changed report layout, added "search again" and collapsible 'options' section with incremental search checkbox and "txtIncrementalSearchDelay" timer tweak to onKeyPress()
2008.08.25 [2.9.2] added animation to search results DIV. Also, the #searchResults DOM element is only auto-created if it does not exist ... and when closed, the DIV is simply hidden rather than removed. This allows custom placement of search results report in the PageTemplate definition.
2008.08.23 [2.9.1] story column search results uses {{{<<moveablePanel>>}}}
2008.08.22 [2.9.0] default is now to show search results at top of story column, similar to FND's SimpleSearchPlugin display, with an option to generate SearchResults tiddler as before. Also changed 'chkSearchIncremental' to 'chkIncrementalSearch' to match core option variable
2008.08.12 [2.8.2] change default for chkSearchByDate back to FALSE, and adjusted "list" and "again" output formats (minor tweaks requested by PhilWhitehouse for use on TiddlyWiki.com)
2008.08.11 [2.8.1] changed defaults for chkSearchTitlesFirst, chkSearchList and chkSearchShadows to TRUE to enable enhanced search results output as soon as plugin is installed.
2008.06.21 [2.8.0] added extended syntax for {{{<<search "text" report heading>> and <<search "text" "heading" "seperator">>}}}
2008.05.03 [2.7.1] in searchLink formatter handler(), use separate setAttribute() call instead of passing attribs to createTiddlyButton(). Avoids conflict with errant code in TiddlerNotesPlugin (v2.1 26/10/07)
2008.04.29 [2.7.0] added searchLink formatter (syntax: {{{[search[text]]}}} or {{{[search[display|text]]}}})
2008.04.08 [2.6.2] don't automatically add options to AdvancedOptions shadow tiddler
2007.02.17 [2.6.1] added redefinition of config.macros.search.onKeyPress() to restore check to bypass key-by-key searching (i.e., when chkSearchIncremental==false), which had been unintentionally removed with v2.6.0
2007.02.13 [2.6.0] remove redefinition of config.macros.search.handler since core now includes handling for ENTER key.
2007.02.08 [2.5.1] include 'temporary' tag when creating SearchResults (for use with TemporaryTiddlersPlugin)
2007.01.29 [2.5.0] added support for "sort results by date". Default is to sort alphabetically (standard). When sorted by dates, most recent changes are shown first
2006.10.10 [2.4.0] added support for "search in tiddler data" (tiddler.fields) Default is to search extended data.
2006.04.06 [2.3.0] added support for "search in shadow tiddlers". Default is *not* to search in the shadows (i.e. standard TW behavior). Note: if a shadow tiddler has a 'real' counterpart, only the real tiddler is searched, since the shadow is inaccessible for viewing/editing.
2006.02.03 [2.2.1] rewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.
2006.02.02 [2.2.0] in search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)
2006.02.01 [2.1.9] in Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching
also, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.
2006.02.01 [2.1.8] in doSearch(), added alert/return if search text is blank
2006.01.20 [2.1.7] fixed setting of config.macros.search.reportTitle so that Tweaks can override it.
2006.01.19 [2.1.6] improved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)
define results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title
2006.01.18 [2.1.5] Created separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.
2006.01.17 [2.1.4] Use regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.
2006.01.15 [2.1.3] Added information (date/time, username, search options used) to SearchResults output
2006.01.10 [2.1.2] use displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.
2006.01.08 [2.1.1] corrected invalid variable reference, "txt.value" to "text" in story.search()
2006.01.08 [2.1.0] re-write to match new store.search(), store.search.handler() and story.search() functions.
2005.12.30 [2.0.0] Upgraded to TW2.0. When rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.
2005.12.26 [1.4.0] added option to search for matching text in tiddler tags
2005.12.21 [1.3.7] use \\ to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link. Based on a suggestion by UdoBorkowski.
2005.12.18 [1.3.6] call displayMessage() AFTER showing matching tiddlers so message is not cleared too soon
2005.12.17 [1.3.5] if no matches found, just display message and delete any existing SearchResults tiddler.
2005.12.17 [1.3.4] use {/%%/{/%%/{ and }/%%/}/%%/} to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered. Based on a suggestion by UdoBorkowski.
2005.12.14 [1.3.3] tag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches. Based on a suggestion by UdoBorkowski.
2005.12.14 [1.3.2] added "open all matching tiddlers..." link to search results output. Based on a suggestion by UdoBorkowski.
2005.12.10 [1.3.1] added "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.
2005.12.01 [1.3.0] added chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).
added handling for Enter key so it can be used to start a search. Based on a suggestion by LyallPearce
2005.11.25 [1.2.1] renamed from SearchTitleOrTextPlugin to SearchOptionsPlugin
2005.11.25 [1.2.0] added chkSearchList option. Based on a suggestion by RodneyGomes
2005.10.19 [1.1.0] added chkSearchTitlesFirst option. Based on a suggestion by ChristianHauck
2005.10.18 [1.0.0] Initial Release. Based on a suggestion by LyallPearce.
<<<
{{span{<<search "javascript">> /%
%/<html><input type="button" value="search again" onclick="var t=this.parentNode.parentNode.getElementsByTagName('input')[0]; config.macros.search.doSearch(t); return false;"> <a href="javascript:;" onclick=" var e=this.parentNode.nextSibling; var show=e.style.display!='block'; if(!config.options.chkAnimate) e.style.display=show?'block':'none'; else anim.startAnimating(new Slider(e,show,false,'none')); return false;">options...</a></html>@@display:none;border-left:1px dotted;margin-left:1em;padding:0;padding-left:.5em;font-size:90%;/%
%/<<option chkSearchTitles>>titles /%
%/<<option chkSearchText>>text /%
%/<<option chkSearchTags>>tags /%
%/<<option chkSearchFields>>fields /%
%/<<option chkSearchShadows>>shadows
<<option chkCaseSensitiveSearch>>case-sensitive /%
%/<<option chkRegExpSearch>>text patterns /%
%/<<option chkSearchByDate>>sorted by date
<<option chkIncrementalSearch>>incremental key-by-key search: /%
%/{{twochar{<<option txtIncrementalSearchMin>>}}} or more characters, /%
%/{{threechar{<<option txtIncrementalSearchDelay>>}}} msec delay
<<option chkSearchExcludeTags>>exclude tiddlers tagged with:
{{editor{<<option txtSearchExcludeTags>>}}}/%
%/@@}}}
''2 tiddlers found matching '{{{javascript}}}'''
~~ searched in titles~~
* [[InlineJavascriptPluginInfo]]
* [[InlineJavascriptPlugin]]
@@diplay:block;<html><input type="button" href="javascript:;" onclick="story.displayTiddlers(null,['InlineJavascriptPluginInfo', 'InlineJavascriptPlugin'],1);" accesskey="O" value="open all matching tiddlers"></html> <html><input type="button" href="javascript:;" onclick="discardSearchResults()" value="discard SearchResults"></html>@@
Wiki profesional para la investigación y la docencia
http://www.cristofolrovira.com/
/*{{{*/
#contentFooter {background:[[ColorPalette::PrimaryMid]]; clear: both; padding: 0.5em 1em; text-align:center; }
#contentFooter a {
color: #FFFFFF;
text-decoration:none;
}
#contentFooter a:hover {
color: #FFFFFF;
text-decoration: underline;
}
/*}}}*/
!!Wiki con información de interés sobre la investigación y la docencia realizada
*[[Sumario]]
*[[Currículum]]
*[[Publicaciones]]
*[[Webs creadas]]
*[[Fotografías]]
*[[Materiales didácticos]]
*[[Enlaces]]
*[[Contacto]]
*[[RSS]]
Cristòfol Rovira Fontanals es profesor de la [[Universidad Pompeu Fabra|http://www.upf.edu]] desde el año 1992 en el área de Biblioteconomía y Documentación. Imparte docencia en las titulaciones de Publicidad y Relaciones Públicas, Comunicación Audiovisual, así como en el [[Máster en Documentación Digital|http://www.documentaciondigital.org]] (Universidad Pompeu Fabra), [[Máster en Buscadores|http://www.masterenbuscadores.com]] (Universidad Pompeu Fabra) y [[Máster Oficial en Gestión de Contenidos Digitales|http://bd.ub.es/gcd/]] (Universidad de Barcelona & Universidad Pompeu Fabra). Actualmente investiga en el desarrollo de nuevas herramientas para la evaluación automática de sedes web.
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
!Web 2.0 para periodistas I: aplicaciones, tecnologías y herramientas
!!Sesión sobre herramientas colaborativas online
!!!1) Presentación: Wikis y comunicación
¿Como podemos aplicar las wikis en periódicos, gabinetes de comunicación, agencias de publicidad...?
Presentación http://docs.google.com/Presentation?id=dcwvxdpj_235g7s6ttdt
!!!2) Wikis ¿Qué son y como funcionan?
Un wiki es un programa informático servidor de datos en red que se distingue por permitir la modificación de los datos por los usuarios, allí donde otros solo admiten la consulta.
Presentación http://docs.google.com/Presentation?id=dcwvxdpj_245dpv4v7gh
PDF http://www.cristofolrovira.com/wikis.pdf
!!!3) Ofímatica Web ¿qué és y como funciona?
La ofimática web es el servicio online que permite crear y editar un texto, una hoja de cálculo y una presentación.
Presentación http://docs.google.com/Presentation?id=dcwvxdpj_183hbqp9rdk
<<toolbar permalink>>
Sedes Web creadas:
Personal
http://www.cristofolrovira.com
http://www.mar.vg
Investigación
http://www.backlinks.com
http://www.ranking.cat
http://www.observaweb.com
Blog
http://docdigital.typepad.com
Publicación Digital
http://www.hipertext.net
Docencia
http://www.masterenbuscadores.com
http://www.documentaciondigital.org
[img[logo creative commons|ccmini_.png]] licencia [[creative commons|http://creativecommons.org/licenses/by-nc-sa/3.0/deed.es]]: reconocimiento-no comercial-compartir bajo la misma licencia. [[Tiddlywiki|http://www.tiddlywiki.com]]