Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
SALIDA DE ESPAÑA DE SUMMER 1 Y SALIDA DE USA DE SUMMER 2
LLEGADA A USA DE SUMMER 1 Y LLEGADA A ESPAÑA DE SUMMER 2
To allow for maximum interaction and immersion in the Salamanca community and the Spanish language, all students live with Spanish families that have been carefully selected by the housing office of the University of Salamanca. (Students may not arrange for their own accommodations, nor make any changes in their residence without the permission of the program director. The home-stay is considered an essential element of the WFU in Salamanca program, and all accommodations must be properly approved.)
<html><p><span>Adecco S.A. is a Global Fortune 500 company and the world leader in workforce solutions. Adecco connects over 700,000 associates with business clients each day through its network of over 33,000 employees and 6,600 offices in over 70 countries and territories around the world. Registered in Switzerland, and managed by a multinational team with expertise in markets spanning the globe, Adecco delivers an unparalleled range of flexible staffing and career resources to corporate clients and qualified associates.</span><span lang="en-gb"><span> </span></span><span> </span><span lang="EN-GB" style=""><span> </span><o:p><span> </span><br /><span> </span></o:p></span><span> </span><span lang="EN-GB" style=""><span>Students wishing to intern with Adecco will meet a small and friendly team in the office in Salamanca. You will help them welcoming </span></span><span lang="en-gb"><span>candidates by collecting their curricula and having an initial interview, where the objective is to filter profiles. You will also speak with those candidates about the conditions and characteristics of available jobs. Other duties are evaluations of candidates through Expert tests, collaborating with the team in the day to day work, recruitment of candidates, in the different sources: Associations, programs of labor insertion, websites: Adecco.es, Infojobs, infoempleo…</span></span></p><span> </span><p><span lang="EN-GB" style=""><span> </span></span><span lang="EN-GB" style=""><o:p><img width="564" vspace="6" hspace="6" height="190" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/adecco.jpg" alt="ADECCO" v:shapes="_x0000_s1048" /></o:p></span></p></html>
/***
|Name|AdvancedOptionsPlugin|
|Source|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Documentation|http://www.TiddlyTools.com/#AdvancedOptionsPlugin|
|Version|1.1.0|
|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.3|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler|
!!!!!Usage
<<<
At document startup, this plugin examines each tiddler tagged with <<tag systemConfig>> and looks for a tiddler slice named "Options" whose value refers to a tiddler section (or separate tiddler) that contains an 'advanced options control panel' for configuring that plugin's features and behavior. For each plugin that contains an "Options" slice, a tabbed entry is automatically created in the [[AdvancedOptions]] shadow tiddler to display that plugin's control panel.
As an optional fallback for backward-compatibility with plugin tiddlers that do not define the "Options" slice, this plugin will also look for a section heading named "Configuration" within those tiddlers, so that older plugins that define this section can automatically have their settings added to the [[AdvancedOptions]] tiddler without requiring the "Options" slice to be added.
<<<
!!!!!Configuration
<<<
<<option chkAdvancedOptions>> automatically add plugin-defined options to the [[AdvancedOptions]] shadow tiddler
<<option chkAdvancedOptionsBackstage>> automatically add plugin-defined options to Backstage menu
<<option chkAdvancedOptionsFallback>> use <<option txtAdvancedOptionsFallback>> section as a fallback for plugins that don't define an ~AdvancedOptions slice
//note: these settings only take effect after reloading the document//
<<<
!!!!!Revisions
<<<
2008.05.09 [1.1.0] add "options" panel to backstage
2008.04.08 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.AdvancedOptionsPlugin= {major: 1, minor: 1, revision: 0, date: new Date(2008,5,9)};
if (config.options.chkAdvancedOptions===undefined)
config.options.chkAdvancedOptions=true;
if (config.options.chkAdvancedOptionsBackstage===undefined)
config.options.chkAdvancedOptionsBackstage=true;
if (config.options.chkAdvancedOptionsFallback===undefined)
config.options.chkAdvancedOptionsFallback=true;
if (config.options.txtAdvancedOptionsFallback===undefined)
config.options.txtAdvancedOptionsFallback="Configuration";
if (config.optionsDesc) config.optionsDesc.chkAdvancedOptions=
"automatically add plugin-defined options to [[AdvancedOptions]]";
var items=[];
var fmt="[[%0 ]] [[view options for %0]] [[%1]]\n";
var section=config.options.txtAdvancedOptionsFallback;
var plugins=store.getTaggedTiddlers("systemConfig");
for (var p=0; p<plugins.length; p++) {
var tid=plugins[p].title;
var settings=store.getTiddlerSlice(tid,"Options");
if (!settings && config.options.chkAdvancedOptionsFallback && store.getTiddlerText(tid+"##"+section))
settings="##"+section; // fallback handling for older plugins
if (settings&&settings.length) {
if (settings.substr(0,2)=="##") settings=tid+settings;
items.push(fmt.format([tid,settings]));
}
}
if (items.length) config.shadowTiddlers.PluginOptions=
"!!![[Plugin-defined options|PluginManager]]\n@@text-align:left;<<tabs '' \n"+items.join(' ')+">>@@";
if (config.options.chkAdvancedOptions)
config.shadowTiddlers.AdvancedOptions+="{{smallform{{{wrap{<<tiddler PluginOptions>>}}}}}}";
// add "options" backstage task
if (config.tasks && config.options.chkAdvancedOptionsBackstage) { // for TW2.2b3 or above
config.tasks.options = {
text: "options",
tooltip: "manage plugin-defined option settings",
content: "{{smallform{{{groupbox{{{wrap{<<tiddler PluginOptions>>}}}}}}\n{{groupbox small {<<options>>}}}}}}"
}
config.backstageTasks.splice(config.backstageTasks.indexOf("plugins")+1,0,"options");
}
//}}}
Students wishing to apply for this program must complete the WFU Salamanca Program application by April 1 for both summer sessions.
Completed applications must be returned to the Department of Romance Languages, Wake Forest University, 323 Greene Hall, Winston-Salem, NC 27109.
Applications can be obtained by writing to the Department of Romance Languages, by sending an email to the program coordinator (galacs@wfu.edu) or from the website link - Application Form.
Applications from other institutions are welcomed and encouraged.
Documents
· Get/renew your passport, if necessary. Go to http://www.travel.state.gov/passport_services.html for information, including the location of the application site nearest you. You will need to submit passport photos with the paperwork.
· Obtain a semester or year long academic visa, see instructions on the Spanish consulate homepage at www.spainemb.org.
· Get an International Student Identity Card from the Office of International Studies or from http://www.counciltravel.com/. It costs about $20 and you will need another passport-sized photo. You will need it for special student deals when buying your plane tickets or rail passes in the US, and you can present it for student discounts in Spain.
· Make copies of all forms of identification. Leave one copy at home, take one copy with you. Make multiple copies of your passport. One to leave in the states, one to leave in your casa, one to carry for ID, and a couple in case your Wake professor needs them.
· Bring your driver's license if you plan on renting a car, but leave other forms of ID at home. Most cars available will have manual, not automatic transmission. You can rent cars with automatic transmission only at the Madrid airport if you reserve it some time ahead. In Salamanca you can find a place (AVAL) to rent cars if you are over 21 years old. Other places will generally ask you to be almost 23.
· Bring a few extra passport-size photos if you have them, or you can have them taken cheaply in one of the photo shops on the Rúa Mayor. Your professors will probably ask for pictures of you to learn your names when classes begin and it's really nice to have them on hand.
Medical Needs
· If you take prescription medication, buy enough to last through your stay. Bring an extra pair of glasses or contact lenses.
/***
|Name|BreadcrumbsPlugin|
|Author|Eric Shulman|
|Source|http://www.TiddlyTools.com/#BreadcrumbsPlugin|
|Documentation|http://www.TiddlyTools.com/#BreadcrumbsPluginInfo|
|Version|2.0.0|
|License|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides|Story.prototype.displayTiddler,TiddlyWiki.prototype.deleteTiddler|
|Options|##Configuration|
|Description|list/jump to tiddlers viewed during this session plus "back" button/macro|
This plugin provides a list of links to all tiddlers opened during the session, creating a "trail of breadcrumbs" from one tiddler to the next, allowing you to quickly navigate to any previously viewed tiddler, or select 'home' to reset the display to the initial set of tiddlers that were open at the start of the session (i.e., when the document was loaded into the browser).
!!!!!Documentation
<<<
see [[BreadcrumbsPluginInfo]]
<<<
!!!!!Configuration
<<<
<<option chkCreateDefaultBreadcrumbs>> automatically create breadcrumbs display (if needed)
<<option chkShowBreadcrumbs>> show/hide breadcrumbs display
<<option chkReorderBreadcrumbs>> re-order breadcrumbs when visiting a previously viewed tiddler
<<option chkBreadcrumbsHideHomeLink>> omit 'Home' link from breadcrumbs display
<<option chkShowStartupBreadcrumbs>> show breadcrumbs for 'startup' tiddlers
<<option chkBreadcrumbsReverse>> show breadcrumbs in reverse order (most recent first)
<<option chkBreadcrumbsLimit>> limit breadcrumbs display to {{twochar{<<option txtBreadcrumbsLimit>>}}} items
<<option chkBreadcrumbsLimitOpenTiddlers>> limit open tiddlers to {{twochar{<<option txtBreadcrumbsLimitOpenTiddlers>>}}} items
<<<
!!!!!Revisions
<<<
2008.05.01 [2.0.0] added 'limit open tiddlers' feature (with safety check for tiddler in edit mode)
| Please see [[BreadcrumbsPluginInfo]] for previous revision details |
2006.02.01 [1.0.0] initial release
<<<
!!!!!Code
***/
//{{{
version.extensions.breadCrumbs = {major: 2, minor: 0, revision: 0, date: new Date("May 1, 2008")};
var co=config.options; // abbreviation
// show/hide display option (default is to SHOW breadcrumbs)
if (co.chkShowBreadcrumbs===undefined) co.chkShowBreadcrumbs=true;
// REORDER breadcrumbs when visiting previously viewed tiddler (default)
if (co.chkReorderBreadcrumbs===undefined) co.chkReorderBreadcrumbs=true;
// create default breadcrumbs display as needed (default is to CREATE)
if (co.chkCreateDefaultBreadcrumbs===undefined) co.chkCreateDefaultBreadcrumbs=true;
// show breadcrumbs for 'startup' tiddlers (default is FALSE = only show crumbs for tiddlers opened after startup)
if (co.chkShowStartupBreadcrumbs===undefined) co.chkShowStartupBreadcrumbs=false;
// show crumbs in reverse order (most recent first)
if (co.chkBreadcrumbsReverse===undefined) co.chkBreadcrumbsReverse=false;
// limit number of crumbs displayed
if (co.chkBreadcrumbsLimit===undefined) co.chkBreadcrumbsLimit=false;
if (co.txtBreadcrumbsLimit===undefined) co.txtBreadcrumbsLimit=5;
// limit number of open tiddlers
if (co.chkBreadcrumbsLimitOpenTiddlers===undefined) co.chkBreadcrumbsLimitOpenTiddlers=false;
if (co.txtBreadcrumbsLimitOpenTiddlers===undefined) co.txtBreadcrumbsLimitOpenTiddlers=3;
// omit home link from breadcrumbs display
if (co.chkBreadcrumbsHideHomeLink===undefined) co.chkBreadcrumbsHideHomeLink=false;
config.macros.breadcrumbs = {
crumbs: [], // the list of current breadcrumbs
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var area=createTiddlyElement(place,"span",null,"breadCrumbs",null);
area.setAttribute("homeSep",params[0]?params[0]:this.homeSeparator); // custom home separator
area.setAttribute("crumbSep",params[1]?params[1]:this.crumbSeparator); // custom crumb separator
this.render(area);
},
add: function (title) {
var thisCrumb = title;
var ind = this.crumbs.indexOf(thisCrumb);
if(ind === -1)
this.crumbs.push(thisCrumb);
else if (config.options.chkReorderBreadcrumbs)
this.crumbs.push(this.crumbs.splice(ind,1)[0]); // reorder crumbs
else
this.crumbs=this.crumbs.slice(0,ind+1); // trim crumbs
if (config.options.chkBreadcrumbsLimitOpenTiddlers)
this.limitOpenTiddlers();
this.refresh();
return false;
},
getAreas: function() {
var crumbAreas=[];
// find all DIVs with classname=="breadCrumbs"
// Note: use try/catch to avoid "Bad NPObject as private data" fatal error caused when
// some versions of embedded QuickTime player element is accessed by hasClass() function.
var all=document.getElementsByTagName("*");
for (var i=0; i<all.length; i++)
try{ if (hasClass(all[i],"breadCrumbs")) crumbAreas.push(all[i]); } catch(e) {;}
// find single DIV w/fixed ID (backward compatibility)
var byID=document.getElementById("breadCrumbs")
if (byID && !hasClass(byID,"breadCrumbs")) crumbAreas.push(byID);
if (!crumbAreas.length && config.options.chkCreateDefaultBreadcrumbs) {
// no existing crumbs display areas... create one...
var defaultArea = createTiddlyElement(null,"span",null,"breadCrumbs",null);
defaultArea.style.display= "none";
var targetArea= document.getElementById("tiddlerDisplay");
targetArea.parentNode.insertBefore(defaultArea,targetArea);
crumbAreas.push(defaultArea);
}
return crumbAreas;
},
refresh: function() {
var crumbAreas=this.getAreas();
for (var i=0; i<crumbAreas.length; i++) {
crumbAreas[i].style.display = config.options.chkShowBreadcrumbs?"block":"none";
removeChildren(crumbAreas[i]);
this.render(crumbAreas[i]);
}
},
render: function(here) {
var out=""
var homeSep=here.getAttribute("homeSep"); if (!homeSep) homeSep=this.homeSeparator;
var crumbSep=here.getAttribute("crumbSep"); if (!crumbSep) crumbSep=this.crumbSeparator;
if (!config.options.chkBreadcrumbsHideHomeLink) {
createTiddlyButton(here,"Home",null,this.home,"tiddlyLink tiddlyLinkExisting");
out+=homeSep;
}
for (c=0; c<this.crumbs.length; c++) // remove non-existing tiddlers from crumbs
if (!store.tiddlerExists(this.crumbs[c]) && !store.isShadowTiddler(this.crumbs[c]))
this.crumbs.splice(c,1);
var count=this.crumbs.length;
if (config.options.chkBreadcrumbsLimit && config.options.txtBreadcrumbsLimit<count)
count=config.options.txtBreadcrumbsLimit;
var list=[];
for (c=this.crumbs.length-count; c<this.crumbs.length; c++) list.push('[['+this.crumbs[c]+']]');
if (config.options.chkBreadcrumbsReverse) list.reverse();
out+=list.join(crumbSep);
wikify(out,here);
},
home: function() {
story.closeAllTiddlers();
restart();
config.macros.breadcrumbs.crumbs = [];
var crumbAreas=config.macros.breadcrumbs.getAreas();
for (var i=0; i<crumbAreas.length; i++) crumbAreas[i].style.display = "none";
return false;
},
limitOpenTiddlers: function() {
var limit=config.options.txtBreadcrumbsLimitOpenTiddlers; if (limit<1) limit=1;
for (c=this.crumbs.length-1; c>=0; c--) {
var tid=this.crumbs[c];
var elem=document.getElementById(story.idPrefix+tid);
if (elem) { // tiddler is displayed
if (limit <=0) { // display limit has been reached
if (elem.getAttribute("dirty")=="true") { // tiddler is being edited
var msg="'"+tid+"' is currently being edited.\n\n";
msg+="Press OK to save and close this tiddler\nor press Cancel to leave it opened";
if (confirm(msg)) { story.saveTiddler(tid); story.closeTiddler(tid); }
}
else
story.closeTiddler(this.crumbs[c]);
}
limit--;
}
}
}
};
if (config.macros.breadcrumbs.homeSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.homeSeparator=" | ";
if (config.macros.breadcrumbs.crumbSeparator==undefined) // note: not a cookie
config.macros.breadcrumbs.crumbSeparator=" > ";
config.commands.previousTiddler = {
text: 'back',
tooltip: 'view the previous tiddler',
hideReadOnly: false,
dateFormat: 'DDD, MMM DDth YYYY hh:0mm:0ss',
handler: function(event,src,title) {
var here=story.findContainingTiddler(src); if (!here) return;
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2];
story.displayTiddler(here,crumb);
}
else
config.macros.breadcrumbs.home();
return false;
}
};
config.macros.previousTiddler= {
label: 'back',
prompt: 'view the previous tiddler',
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var label=params.shift(); if (!label) label=this.label;
var prompt=params.shift(); if (!prompt) prompt=this.prompt;
createTiddlyButton(place,label,prompt,function() {
var crumbs=config.macros.breadcrumbs.crumbs;
if (crumbs.length>1) {
var crumb=crumbs[crumbs.length-2];
story.displayTiddler(place,crumb);
}
else
config.macros.breadcrumbs.home();
});
}
}
// hijack story.displayTiddler() so crumbs can be refreshed when a tiddler is displayed
if (Story.prototype.breadCrumbs_coreDisplayTiddler==undefined)
Story.prototype.breadCrumbs_coreDisplayTiddler=Story.prototype.displayTiddler;
Story.prototype.displayTiddler = function(srcElement,tiddler,template,animate,slowly)
{
var title=(tiddler instanceof Tiddler)?tiddler.title:tiddler;
this.breadCrumbs_coreDisplayTiddler.apply(this,arguments);
// if not displaying tiddler during document startup, then add it to the breadcrumbs
// note: 'startingUp' flag is a global, set/reset by the core init() function
if (!startingUp || config.options.chkShowStartupBreadcrumbs) config.macros.breadcrumbs.add(title);
}
// hijack store.removeTiddler() so crumbs can be refreshed when a tiddler is deleted
if (TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler==undefined)
TiddlyWiki.prototype.breadCrumbs_coreRemoveTiddler=TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler= function(title)
{
this.breadCrumbs_coreRemoveTiddler.apply(this,arguments);
config.macros.breadcrumbs.refresh();
}
//}}}
<html><p><img hspace="10" align="right" src="http://www.wfu.edu/romancelanguages/study_abroad/Salamanca/images/salamanca5.jpg" alt="" /></p><p><span style="font-size: larger;"><strong>Summer 2009</strong></span></p></html>[[Summer 1 2009]] - [[Summer 2 2009]] <html><p><strong>NOTE:</strong><br />These dates are subject to change due to availability in hotels and transportation reservations. Your Program Director will inform you ahead of time about possible changes.</p></html>
The province of Salamanca is situated in the South-west corner of Castile & León on the borders with Extremadura and Portugal, on Spain’s Northern Plateau (meseta). It covers an area of 12,336 sq. km (4,763 sq. m.).
The city of Salamanca has some 180.000 inhabitants. It offers the advantages of a real city with the charm and character of a small town. In Salamanca, the inhabitants speak what has been traditionally considered a very pure form of Spanish, - Castilian. For this reason Salamanca attracts people from all over the world who want to learn Spanish. It is not difficult to get to know people as you are bound to see everyone in the Plaza Mayor, one of the finest squares in Spain and known as the living room of the Salmantinos. Salamanca is a real university city, housing one of the oldest and most prestigious universities in Europe. One can go practically everywhere on foot.
Click on the links below for information:
*''[[Online Picture Tour of Salamanca:|http://www.flickr.com/groups/salamanca/pool/show/]]''
*''[[About Salamanca:|http://www.aboutsalamanca.com]]''
*''[[Tribuna de Salamanca (newspaper):|http://www.tribuna.net]]''
*''[[La Gaceta de Salamanca (newspaper):|http://www.lagacetadesalamanca.com/]]''
*''[[University of Salamanca:|http://www.usal.es]]''
The Wake Forest program consists of specially-designed classes, taught by both University of Salamanca professors and the Wake Forest program director. Since the only students are you and your fellow program members, classes are very small. The schedule is arranged so that you do not have classes on Friday, leaving you an extra day to travel on weekends.
There is also the option of enrolling in regular classes with Spanish students, (PEI courses) which can give a new perspective on the true university experience in Spain. If you have taken a few higher level Spanish classes and your Spanish is strong enough, you may want to consider enrolling in at least one regular university class. Be aware that they will be much larger and probably not taught in the same way as your specialized classes. If you are interested in these classes, you should talk with your program director as soon as possible about your interest, since s/he will need time to investigate what is available and what fits with your schedule. But be forewarned that it is sometimes nearly impossible to fit these classes in with your schedule. None of the students in the Spring 2003 program could make them work, so don't count on having them to transfer for your non Spanish majors.
Another possibility for learning in a practical setting is an internship, which you can do for credit. If you are interested in internships, again, tell your program director early on, so that s/he can help you arrange one. Remember that internships count towards graduation, but not for the major or minor in Spanish.
There are a number of libraries throughout the city, which you can use for study and research. Using a library in Salamanca is much, much more difficult than in the US. In most, you must fill out a form in order for the librarian to bring you a book and let you look at it in the library (most do not have open stacks); if you want to check it out, you have to fill out another form. In order to check books out, you need to get a library card; bring your Salamanca student ID, your passport, and a passport-sized photo to the Biblioteca de Filología. Most libraries will only allow you to take out four books at a time (if that) for a few days (if that). In general, the Biblioteca de Geografía e Historia is a little easier to use than Filología, since it is smaller and more manageable. Use the computer system to look up books; the computer system searches the whole university library system, so make sure the book you're looking for is in a library that you know. (If it's not in Filología or Historia, it's probably not worth trekking across town for.) The central university library, Santa María de los Ángeles, on Calle Libreros, is a good place for finding reference books and has a nice study atmosphere, but you can't check any books out of it.
<html><!--[if !vml]--><span> </span><img width="256" hspace="12" height="193" align="right" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/academic_program_clip_image006.jpg" v:shapes="_x0000_s1029" alt="" /><span> </span><!--[endif]--><span lang="EN-GB" style=""><span>This is new internship opportunity where Interns will assist as <a href="javascript:;" title="The tiddler 'English-Spanish-English' doesn't yet exist" class="tiddlyLink tiddlyLinkNonExisting" refresh="link" tiddlylink="English-Spanish-English">English-Spanish-English</a> interpreters in general medicine consultations between the physician and the large number of international students who come to </span><st1:city w:st="on"><span>Salamanca</span></st1:city><span> in the summer to learn Spanish at the </span><em><span>Cursos Internacionales </span></em><span>offered by the </span><st1:place w:st="on"><st1:placetype w:st="on"><span>University</span></st1:placetype><span> of </span><st1:placename w:st="on"><span>Salamanca</span></st1:placename></st1:place><span>. Inters will also have the opportunity to assist to consultations related to sports medicine.</span></span></html>
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
For local and long-distance calls, expect to use public telephones or your cell phone (if you have a flat rate). For calls within Spain, you can use coins or you can buy a prepaid card from any tobacco shop. You will also want to buy prepaid calling cards for calling to the states. Eurocity gives the most minutes for your money and can be used for calls within Spain and out of Spain. There is a little tobacco store on the way to class just down the road from Mandala where you can buy phone cards easily in between classes. You can easily use these cards in the pay phones around town.
NOTE: As of Fall 2006, you will have the chance to purchase a contract with a cell phone company to use during the program!
Cell phones, or móviles, as they are called, are all the rage in Spain, especially among students. Be aware that making calls to a cell phone can be very expensive. They can be useful for making calls to friends within Salamanca, but are not the best deal for making calls from the US. I suggest that students should have cell phones because it is the only way to communicate between students.
Cell phone plans are different in Spain than they are in the US. You do not buy a certain number of minutes per month. Instead you buy phone cards to recharge your phone. You can buy these cards in tobacco stores and in the stores of the different phone companies (Movistar, Orange, Vodafone, Yoigo) When choosing your plan, keep in mind that no one company is dominant, so you will probably be calling phones on different plans. As you use up your minutes, you can buy cards for more.
Wake Forest found in fall 2006 a cell phone plan that almost fits perfectly for you at Apelcom. This company offers special plans for foreign students in Spain. Find more info at http://www.apelcomcell.net/. If you don't like their rates you can always look for an adequate cell phone plan at http://www.phonehouse.es/. They deal with all the Spanish phone companies and they have a store next to the WF Center.
There are a number of places where you can use the Internet. Your director will provide you with a cash stipend to use these facilities. Take advantage of the free Internet offered through the University. There are many Internet cafes around town. Find your favorites! Also … WFU Center.
You can buy stamps at any estanco store; just tell the clerk whether it's for a letter or postcard, and whether you're sending it within Spain or out of the country. You can also buy stamps at the yellow post office branches around town. There are several letter drop boxes around town (called buzones), often green or yellow, with the post office symbol on them.
<html><span> </span><p><!--[if !vml]--><span> </span><img width="266" vspace="6" hspace="12" height="133" align="left" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/academic_program_clip_image004.jpg" alt="Salamanca Clay Formacion" v:shapes="_x0000_s1028" /><span> </span><!--[endif]--><span> </span><span lang="EN-GB" style=""><span>Clay Formación Internacional S.L. is a firm, a spin-off of the </span><st1:place w:st="on"><st1:placetype w:st="on"><span>University</span></st1:placetype><span> of </span><st1:placename w:st="on"><span>Salamanca</span></st1:placename></st1:place><span>, which offers consulting services in Information Technologies. Students wishing to intern with Clay Formación will be interviewed to ascertain their social, communicative and customer service skills. Clay Formación offers one internship in each of the two summer sessions. The main aspect of the intern’s work will center on dealings with potential international customers for the sale of products related with education in new technologies.</span></span></p></html>
<html><table height="305" cellspacing="0" cellpadding="0" border="0" width="453" style=""><tbody><tr><td><p><span style="font-size: larger;"><span style="font-family: Arial;">Professor Candelas Gala <br /> Program Coordinator <br /> 323 Greene Hall <br /> Winston-Salem, NC 27109 <br /> Tel: (336) 758-5485; (336) 758-4206 <br /> Fax: (336) 758-4432 <br /> Email: </span></span><font face="Bell MT"><a href="mailto:galacs@wfu.edu"><span style="font-size: larger;"><span style="font-family: Arial;">galacs@wfu.edu</span></span></a></font><a href="mailto:petersjr@wfu.edu"><span style="font-size: larger;"><span style="font-family: Arial;"><br /> </span></span></a></p></td><td><p><span style="font-size: larger;"><span style="font-family: Arial;"><img hspace="10" height="108" align="middle" width="165" src="http://www.wfu.edu/romancelanguages/images/20041202-gala.jpg" alt="" /></span></span></p></td></tr><tr><td><span style="font-size: larger;"><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="Apple-style-span">Prof. Gª Garrido, Javier<br />On-Site Director<br />Coordinación de Grupos<br />Wake Forest University en Salamanca<br />C/ Toro, 84-90, Oficina 6<br />37001 Salamanca<br />Telf: (+34) 923 21 24 66<br />Móvil/cell: (+34) 655 61 23 98<br /></span></span><span style="font-size: larger;"><span style="font-family: Arial;">Email: </span></span><font face="Bell MT"><a href="javascript:location.href='mailto:'+String.fromCharCode(103,97,114,114,105,100,111,64,119,102,117,46,101,100,117)+'?'"><span style="font-size: larger;"><span style="font-family: Arial;">garrido@wfu.edu</span></span></a></font><span style="font-size: larger;"><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px;" class="Apple-style-span"><br /></span></span></td><td><img src="http://www.larutadelalengua.com/yo1.jpg" alt="" /></td></tr></tbody></table><p><span style="font-family: Arial;"><span style="font-size: medium;"><b>For more information on admissions and tuition please visit the Wake Forest University website:</b><br /> </span></span><font face="Bell MT"><a set="yes" linkindex="0" href="http://www.wfu.edu/"><span style="font-family: Arial;"><span style="font-size: medium;">http://www.wfu.edu/</span></span></a> </font></p></html>
''Summer 2007''
*Tuition: $630 per hour 3h: $1890
*Room and Board per session (3 daily meals, weekly laundry) $1050
*Administrative Fees $360
''Total: $3300''
Not included are transportation to and from Spain, US passport and visa fees, optional trips offered in the program, and personal expenses and travel.
<html><span> </span><p><span lang="EN-GB" style=""><o:p></o:p></span></p><span> </span><p><!--[if !vml]--><span> </span><!--[endif]--><span> </span><strong><span lang="EN-GB" style=""><span lang="EN-GB" style=""><img width="155" vspace="6" hspace="6" height="207" align="right" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/sida.jpg" alt="EstivalTour" v:shapes="_x0000_s1047" /></span></span></strong><span lang="EN-GB" style=""><span>In Cáritas Salamanca you will work closely with people affected by AIDS. This internship is only thought for students with a great sense of charity. At Cáritas you will help giving information and accompanying patients and their families, in the process of illness and death. You will also help them in their social and labour insertion. At the hospital you will take turns with the family helping them to take the necessary rest. You will also help the family improve poor relationships with the patient. Your presence will be much appreciated at the “House home”, a shelter for those who have no alternative housing and / or need permanent care.</span></span></p></html>
Summer 1 and Summer 2. Students may apply for either one session or for both. The Summer 1 session will run from the ending of may to the ending of June, and the Summer 2 session will run from approximately the first week in July through the first of August. More specific dates will be posted soon, or you can contact the coordinator through contact information.
<!--{{{-->
<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>
<!--}}}-->
Our travels will take us to the unforgettable, awe-inspriring 16th Century monastery of the Escorial. Raised in 1563 as a monument to his father Charles V, the Escorial stands as an icon of the Spanish Empire and its audacios grandiosity. Not far from Madrid near an obscure town
this overwhelming construction encompasses a palace, royal pantheon and mausoleum, basilica and library. Its enormous installations include 15 cloisters, 16 patios, 300 cells, 9 organs, 1600 paintings, 88 fountains and 2673 windows and 1200 doors. This is the paramount symbol of the Empire at its height and the massive power and wealth it wielded. Today, visiting it is an almost surreal glimpse at a time when Spain believed it was Divinely destined to and capable of ruling the world.
Take your camera, but no photo can capture the scope of this stunning creation.
[img[http://www.wfu.edu/romancelanguages/study_abroad/Salamanca/images/escorial.JPG]]
Students applying for the Wake Forest/Salamanca Internships Summer Program must complete an application form which will be available early in the spring semester from the Department of Romance Languages. The deadline for receipt of applications is April 10.
Students from other universities who wish to apply should contact their respective schools about credit transfers and other academic issues. Language recommendation form.
/%
|Name|EmbedTiddlers|
|Source|http://www.TiddlyTools.com/#EmbedTiddlers|
|Version|1.2.2|
|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|script|
|Requires|InlineJavascriptPlugin|
|Overrides||
|Description|transclude a list of tiddlers in a specific order|
usage:
<<tiddler EmbedTiddlers with: "TiddlerName [[TiddlerName with spaces]] TiddlerName ...">>
or
<<tiddler EmbedTiddlers with: @TiddlerName>>
or
<<tiddler EmbedTiddlers with: =tagValue sortby>>
where
@TiddlerName
specifies a //separate// tiddler containing the space-separated,
bracketed list of tiddlers to transclude (e.g., DefaultTiddlers)
=tagValue
embeds all tiddlers tagged with the indicated value
sortby (optional)
specifies a tiddler field for sorting the results (default="title")
"+" or "-" prefix indicates the sort direction (ascending/descending),
e.g., "-modified" sorts by tiddler modification date, most recent first
Note: if MatchTagsPlugin is installed, you can use FULL BOOLEAN LOGIC EXPRESSIONS
in place of the "tagValue" (following the leading "="). However, because the boolean
expression will contain spaces, it MUST be enclosed in [[...]], like this:
<<tiddler EmbedTiddlers with: [[=settings AND NOT systemConfig]]>>
%/<script>
var list='$1';
var sortby='title'; if ('$2'!='$'+'2') sortby='$2';
var tids=[];
if (list.substr(0,1)=='=') {
var fn=store.getMatchingTiddlers||store.getTaggedTiddlers;
var tagged=store.sortTiddlers(fn.apply(store,[list.substr(1)]),sortby);
for (var t=0; t<tagged.length; t++) tids.push(tagged[t].title);
} else {
if (list.substr(0,1)=='@') list=store.getTiddlerText(list.substr(1),'');
var tids=list.readBracketedList();
}
var out='';
for (var i=0; i<tids.length; i++) out+='<<tiddler [['+tids[i]+']]>>';
return out;
</script>
<html><p><img width="164" vspace="6" hspace="12" height="124" align="right" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/academic_program_clip_image008.jpg" v:shapes="_x0000_s1030" alt="" /><span><span><p><span>Students visit local schools on a regular basis in order to assist in English language classes. Schools available include elementary and high school levels.</span><br /><span> Students may work with their school to arrange a mutually convenient time, though Friday participation may be necessary if students have schedule conflicts due to classes.</span><span>This option represents an excellent opportunity for those interested in foreign language education or education in general.</span></p></span></span></p><p><strong><span>Public Kindergarten and Elementary School / Colegio Público de Educación Infantil y Primaria (Santa Catalina)</span></strong></p><p><span> </span></p><p><!--[if !vml]--><span> </span><span> </span><!--[endif]--><span> </span><span lang="EN-GB" style=""><span>This internship site is highly recommended for future teachers as interns will be immersed in daily classroom activities. It is also an excellent </span></span><span lang="EN-GB" style=""><span>site to improve the knowledge of Spanish as interns will be in constant contact with school children (5-10 years of age). They will also work closely with teachers and educators in the development of educational activities for the children, and will assist them during recess periods. A complementary activity will be the organization of the dining hall/cafeteria and assisting during meal time.</span></span></p></html>
<html><span> </span><p><!--[if !vml]--><span> </span><img width="305" vspace="6" hspace="6" height="38" align="left" src="http://www.wfu.edu/romancelanguages/study_abroad/SummerInternship/estivaltour.jpg" alt="EstivalTour" v:shapes="_x0000_s1032" /><span> </span><!--[endif]--><span> </span><span lang="EN-GB" style=""><span>Viajes ESTIVALTOUR is one of the leading travel agencies in </span><st1:country-region w:st="on"><st1:place w:st="on"><span>Spain</span></st1:place></st1:country-region><span>. The group has over 200 offices across the </span><st1:place w:st="on"><span>Peninsula</span></st1:place><span>. Their large experience, almost a decade advising and recommending customers, is their best background. During the internship you will be part of a very familiar and small team of travel agents. Your duties will involve all daily activities in a travel agency such as answering calls, advising national and international customers, accounting, updating web pages, etc.</span></span></p></html>
Looking for activities besides classes, la marcha, and travel to fill your time? Unfortunately, the university bureaucracy can be absolutely maddening, and, predictably, getting involved in student organizations and student life can be difficult. Your best bet is to read the student newspaper (la Tribuna Universitaria) religiously, where you'll find announcements of different club activities. Also talk to Spanish students - they will be your best source of information. Ask your program director about specific interests - sports, music, volunteer work - but keep in mind that s/he will encounter just as much bureaucracy as you will.
Volunteer activities are hard to find in Salamanca. If you do want to get involved, you should get started early, since many organizations want volunteers to commit to serve at least three months. Ask your program director or host family for ideas; you can ask at the Cruz Roja or see what is offered by various churches (catholic or protestant).
There are many catholic churches around town. If you are looking for a nondenominational protestant church, there is one at 30 Paseo de la Estación that offers worship services and other opportunities for involvement, like Bible studies. Check the phone book for other churches, such as the Jehovah's Witnesses and Latter Day Saints. For non-Christian religious services, you may be able to find them in major cities like Madrid, but you will have a hard time finding them in Salamanca.
The best way of finding what you want is to ask other young people. Take advantage of the fact that you are in a city of more than 40,000 students - get to know some Spanish or other international students. Admittedly, it is difficult to "make friends," especially if you are only there for a semester, but there are many opportunities to practice your Spanish with other young people while getting to know some people outside of your circle of American friends. The easiest way to do this is through an intercambio - you will see small notices in the academic buildings from Spanish students who want to practice their English/German/French etc. with native speakers. You may want to put up a few of your own - you are practically guaranteed more than one response and others will take the initiative to contact you. List a few of your interests - sports, music, history, film, literature - so that you can find people who have more in common than just a desire to speak another language. Remember to exercise common sense and be safe - only put your phone or email address, NOT your street address. Meet in a public place, and go to a café for coffee and speak for half an hour in Spanish, half an hour in English. If for some reason you don't feel comfortable with your intercambio, or don't feel that you have much in common, you're under no obligation to meet again. Not every intercambio will work out perfectly, but keep trying - you will learn a lot and maybe even make a few friends in the bargain! You can find a lot of intercambios at the University website http://websou.usal.es/interlin/buscail.asp.
/***
|''Name:''|FCKeditorPlugin|
|''Description:''|Wysiwyg editor for TiddlyWiki using FCKeditor.|
|''Version:''|1.1.1|
|''Date:''|Dec 21,2007|
|''Source:''|http://visualtw.ouvaton.org/VisualTW.html|
|''Author:''|Pascal Collin|
|''License:''|[[BSD open source license|License]]|
|''~CoreVersion:''|2.2.0|
|''Browser:''|Firefox 2.0; InternetExplorer 6.0, others|
!Demo:
On the plugin [[homepage|http://visualtw.ouvaton.org/VisualTW.html]], see and edit [[WysiwygDemo]].
!Installation:
#download and unzip [[FCKeditor|http://www.fckeditor.net/download]] (by default, in a wiki subfolder, such that the relative path "fckeditor/fckeditor.js" is right).
#import [[FCKeditorPlugin]] (systemConfig tagged)
#add the following text to MarkupPreHead : {{{<script type="text/javascript" src="fckeditor/fckeditor.js"></script>}}}
#customize FCKeditorPath if needed (in MarkupPreHead and in options below)
#save and reload
#use the <<toolbar editHtml>> button in the tiddler's toolbar (in default ViewTemplate) or add {{{editHtml}}} command in your own toolbar.
! Useful Addons
*[[HTMLFormattingPlugin|http://www.tiddlytools.com/#HTMLFormattingPlugin]] to embed wiki syntax in html tiddlers.<<br>>//__Tips__ : When this plugin is installed, you can use anchor syntax to link tiddlers in wysiwyg mode (example : #example). Anchors are converted back and from wiki syntax when editing.//
*[[TaggedTemplateTweak|http://www.TiddlyTools.com/#TaggedTemplateTweak]] to use alternative ViewTemplate/EditTemplate for tiddler's tagged with specific tag values.
!Configuration options :
|FCKeditor folder (absolute or relative)|<<option txtFCKeditorPath>> |
|FCKeditor custom configuration script path (relative or absolute)<<br>>[[Example|fckeditor/editor/custom_config.js]] : {{{ fckeditor/editor/custom_config.js}}}|<<option txtFCKCustomConfigScript>>|
|Toolbar name ("Default", "Basic" or custom)<<br>>See [[FCKeditor documentation|http://wiki.fckeditor.net/Developer%27s_Guide/Configuration/Toolbar]] for more information on custom toolbars|<<option txtFCKToolbar>>|
|FCKeditor default height (if blank = 500px)|<<option txtFCKheight>>|
|Template called by the {{{wysiwyg}}} button|EditHtmlTemplate|
!Code
***/
//{{{
config.options.txtFCKeditorPath = config.options.txtFCKeditorPath ? config.options.txtFCKeditorPath : "fckeditor/";
config.options.txtFCKCustomConfigScript = config.options.txtFCKCustomConfigScript ? config.options.txtFCKCustomConfigScript : "";
config.options.txtFCKToolbar = config.options.txtFCKToolbar ? config.options.txtFCKToolbar : "";
config.options.txtFCKheight = config.options.txtFCKheight ? config.options.txtFCKheight : "500px";
config.macros.editHtml = {
handler : function(place,macroName,params,wikifier,paramString,tiddler) {
var field = params[0];
var height = params[1] ? params[1] : config.options.txtFCKheight;
if (typeof FCKeditor=="undefined"){
displayMessage(config.macros.editHtml.FCKeditorUnavailable);
config.macros.edit.handler(place,macroName,params,wikifier,paramString,tiddler);
}
else if (field) {
var e = createTiddlyElement(null,"div");
var fckName = "FCKeditor"+ Math.random();
if(tiddler.isReadOnly())
e.setAttribute("readOnly","readOnly");
e.setAttribute("editHtml",field);
if (height) e.setAttribute("height",height);
e.setAttribute("fckName",fckName);
place.appendChild(e);
var fck = new FCKeditor(fckName);
fck.BasePath = config.options.txtFCKeditorPath;
if (config.options.txtFCKCustomConfigScript) fck.Config["CustomConfigurationsPath"] = config.options.txtFCKCustomConfigScript ;
if (config.options.txtFCKToolbar) fck.ToolbarSet = config.options.txtFCKToolbar;
fck.Height=height;
var re = /^<html>(.*)<\/html>$/m;
var fieldValue=store.getValue(tiddler,field);
var htmlValue = re.exec(fieldValue);
var value = (htmlValue && (htmlValue.length>0)) ? htmlValue[1] : fieldValue;
value=value.replace(/\[\[([^|\]]*)\|([^\]]*)]]/g,'<a href="#$2">$1</a>');
config.macros.editHtml.FCKvalues[fckName]=value;
e.innerHTML = fck.CreateHtml();
}
},
gather : function(e) {
var name = e.getAttribute("fckName");
var oEditor = window.FCKeditorAPI ? FCKeditorAPI.GetInstance(name) : null;
if (oEditor) {
var html = oEditor.GetHTML();
if (html!=null)
return "<html>"+html.replace(/<a href="#([^>]*)">([^<]*)<\/a>/gi,"[[$2|$1]]")+"</html>";
}
},
FCKvalues : {},
FCKeditorUnavailable : "FCKeditor was unavailable. Check plugin configuration and reload."
}
window.FCKeditor_OnComplete= function( editorInstance ) {
var name=editorInstance.Name;
var value = config.macros.editHtml.FCKvalues[name];
delete config.macros.editHtml.FCKvalues[name];
oEditor = FCKeditorAPI.GetInstance(name);
if (value) oEditor.SetHTML(value);
}
Story.prototype.previousGatherSaveEditHtml = Story.prototype.previousGatherSaveEditHtml ? Story.prototype.previousGatherSaveEditHtml : Story.prototype.gatherSaveFields; // to avoid looping if this line is called several times
Story.prototype.gatherSaveFields = function(e,fields){
if(e && e.getAttribute) {
var f = e.getAttribute("editHtml");
if(f){
var newVal = config.macros.editHtml.gather(e);
if (newVal) fields[f] = newVal;
}
this.previousGatherSaveEditHtml(e, fields);
}
};
config.shadowTiddlers.EditHtmlTemplate = config.shadowTiddlers.EditTemplate.replace(/macro='edit text'/,"macro='editHtml text'");
config.commands.editHtml={
text: "wysiwyg",
tooltip: "Edit this tiddler with a rich text editor",
readOnlyText: "",
handler : function(event,src,title) {
clearMessage();
var tiddlerElem = document.getElementById(story.idPrefix + title);
var fields = tiddlerElem.getAttribute("tiddlyFields");
story.displayTiddler(null,title,"EditHtmlTemplate",false,null,fields);
return false;
}
}
config.shadowTiddlers.ViewTemplate = config.shadowTiddlers.ViewTemplate.replace(/\+editTiddler/,"+editTiddler editHtml");
//}}}
You will meet your host family as soon as you arrive in Salamanca. Relax! Everyone is a little nervous about the prospect of living with a new family, communicating in a foreign language, and adjusting to a different culture, but many students consider the homestay one of the most rewarding parts of their experience abroad.
Your host family is paid a certain amount of money to provide you with an individual room, a set of keys to the house, a hot shower, three meals a day, and laundry. Most families are used to hosting foreign students every year, so they won't expect you to be familiar with all Spanish customs or to speak Spanish fluently, and will help you adjust. Every family is different, so there is no formula for having a successful experience. However, here are some general tips that will ease your transition:
Communicate, from the minute you meet your host family. If you don't understand something or have a problem, ask about it. It may take a few tries, but have patience and don't give up. Always be honest about your likes and dislikes.
Ask about the house rules the very first day, and respect them. Since every family is different, don't assume anything - ASK.
Electricity, water, and telephone are all expensive utilities in Spain, much more so than in the U.S. Learn to use them sparingly - turn off the lights when you leave the room, and take short showers. However, you are paying for basic accommodations, so if there isn't hot water or sufficient heat in your room, talk to your host mother.
Since telephone use is very expensive, and most people are nervous about extra charges, don't be surprised if your family won't allow you to make any outgoing calls (even with a calling card, which is a foreign concept). Ask if/when you are allowed to receive calls, and teach the folks back home to say "(your name), por favor." Tell them to call at meal times, so you'll definitely be home, keeping in mind that Spain is six hours ahead of Eastern Standard Time. Most students acquire cell phones while in Salamanca. That’s the preferred way to be contacted by all your friends and family.
When you walk in the door, say a general "Hola" to let them know you are home (unless it is 5AM, of course). Say "Hasta luego" or "Me voy" upon leaving the piso.
Ask about mealtimes and let your host mother know if you won't be home for a meal.
Ask permission before using or borrowing things that are not your own (including food); respect your family's privacy. In the US, turning on the television or helping yourself from the fridge might be considered perfectly normal behaviour for a long-term guest, but in Spanish culture it can be seen as inappropriate if the family hasn't given you leave to do so.
Also respect the family's private space. How would you like to always have strangers invading your home! Read and study in your own room. When you're home, keep your door closed/cracked - this practice gives the family some privacy in their own home and lets you escape as well. But don't expect to be able to lock your bedroom door when you leave the piso. Your madre will need to get in your room to clean, change sheets, etc. Sometimes her housekeeping will involve your stuff being rearranged, especially with some of the more over-zealous madres. Unless your things are being stolen from you (in which case you should see your Wake director immediately), just accept it.
When you're home alone and the phone rings, answer it (say "Diga," not "Hola") and
take a message. If you feel uncomfortable doing this, ask your family.
Watching TV with your family is a great way to learn Spanish expressions and chat with the family about something other than the weather. Some families will also let you watch TV on your own; you can find lots of dubbed American movies on weeknights. Expect the TV to be on (and loud!) during every meal; most families have theirs right by the dinner table.
Entertaining at home is not typical in Spain - most people meet in a restaurant or bar. Don't assume that you will be allowed to bring friends over.
Cleanliness is often very important in the Spanish home. When you enter the piso, take off your shoes and put on a pair of slippers. Offer to help with basic chores; if they say no, don't feel that you have to insist, but offer anyway. Clean up after yourself; this may mean keeping your room cleaner than you would in the dorm at Wake Forest, but your family will appreciate it if you refrain from leaving mountains of dirty clothes in your bedroom and puddles of water on the bathroom floor.
Your madre will have a system set up for doing your laundry, but keep in mind that it may take time for her to get to it, especially in a larger family. If you have something that you want to wear the next day, you may want to take it to a laundrymat or drycleaners. A few families don't have big enough washers to wash piles of clothes so they may ask you to do all of your laundry at the laundrymat. This process is easy and fairly cheap usually $3 for a washer and $3 for a dryer. However, unlike in the states, they will do your wash for you. Ask your madre to take you the first time so you can learn the ropes.
Don't let problems go unresolved. If you feel uncomfortable or uncertain as to how to resolve a situation, talk to your program director. He or she will be able to advise you, help communicate your needs to your hosts and mediate, or help you change families if necessary.
Please do not be nervous! Living in a home that is not your own requires a period of adjustment, but you will be amazed by the improvements in your conversational Spanish. Have a sense of humour and don't be afraid to be yourself - you may discover that you and your host family have more in common than you ever could have imagined.
- Your ATM card from home is the standard, most convenient way to get money in Spain. (Find out what fees your bank charges for international ATM withdrawals. Fewer, larger withdrawals are normally cheaper than many small ones). Call ahead to let them know your travel pattern, so they don’t flag your account as fraudulent.
· Set up a system for monitoring your finances while abroad; most banks will now let you do it online, or make sure that someone at home can access your info and is keeping track of your statements. Establish a means ahead of time for someone at home to make deposits to your account if necessary.
· Buy a money belt to wear around your neck or waist, under your clothes.
· Budgeting. Prices in Spain are roughly comparable to those in the U.S. (with the exception of food and lodging, which tend to be a little cheaper). Most people end up spending between $1000 and $2000 during the course of the semester - this includes extra travel, buying clothes and supplies in Salamanca, and paying for drinks, snacks, and eating out.
Money
Spain is full of telebancos (ATMs) and you can usually find one that services PLUS or Cirrus cards. When you arrive in Salamanca and haven't had time to find your nearest ATM yet, you can find some inside or around the Plaza Mayor. The exchange rate is usually excellent; however, service fees vary for each bank, so you may want to call your bank before you leave the States and inquire about their fees for international withdrawals.
Credit cards are also accepted almost everywhere (several students have encountered problems finding places that accepted American Express). Credit cards can also be used in ATMs to make cash withdrawals. Call your credit card company to inquire about how they charge fees on cash withdrawals. Do not depend solely on a credit card because many establishments simply do no accept them. Also, if you are in a hurry, try to use cash because credit cards can sometimes take longer. If you plan on using your card in an ATM do not forget your PIN.
Traveler´s checks are increasingly hard to use. It is almost impossible to find banks that will cash them and they give you horrible exchange rates coupled with commission charges.
Always remember that banks in Spain close at 2:00 pm and do not reopen and only a select few are open on Saturdays.
Don't forget to bring something secure (like a money belt) to put your money in while traveling. Americans are particularly vulnerable to theft, and replacement credit and ATM cards may take as much as two weeks to arrive.
Food: at home and on your own
Breakfast is typically light - some toast or cookies with a cup of hot chocolate or coffee. You'll eat before you go off to class in the morning. Lunch, or comida, is the big meal of the day. It's rare to eat before 2, and many families wait until 3. Everything shuts down between 2 and 5 in the afternoon, when everyone goes home for a big meal. Some families will serve a first course, primer plato, which usually is vegetarian, followed by segundo plato, some kind of meat or fish. Staple foods include tortilla española (a thick potato omelette), sausages, pork and chicken, lentils and beans, soup, potatoes, and the ever-present pan - crusty, baguette-style bread. Food is cooked with a lot of olive oil. The typical dessert is a piece of fruit or a small cup of yogurt. Dinner is a smaller meal, eaten around 9 or 10 at night, sometimes later.
Students are usually concerned about offending their families if they can't or don't want to eat the food that is offered. If they serve you heaping portions, simply explain that you don't eat much or are watching your weight, and you hate to see good food go to waste. (Spaniards as a rule are more sensitive to the concept of waste than Americans.) As far as food preferences go, the first rule goes back to the advice your mom gave you - try it, you might actually like it. However, if you are a vegetarian, have a food allergy, or are just an extremely picky eater - politely explain that you can't eat meat, eggs, onions, etc. Be forewarned that this will probably invite comments, but if you are polite but determined you won't have to eat it.
The first few weeks or month on the Spanish horario may be a difficult adjustment, but remember that eating between meals here is a way of life. Many people have a small snack around 11 or 12 in the morning, and another at 6 or 7. This is where tapas, or bar snacks, come in. You can also buy cheap snacks at the grocery store - there is a Carrefour Express on Calle Toro, and the discount grocery chain, Día, has stores scattered around the city. There is a 24-hour convenience grocery store (overpriced, but the only one of its kind!) right behind the public library in the Plaza de Gabriel y Galán.
There are tons of cafés in Salamanca, each with an atmosphere to suit your mood. The ones in the Plaza Mayor are over-priced, but they are good places to meet friends and watch people, especially when it gets warm, as you can sit outside. There are also many cafés near school in which you can pass the time between classes. Some favourites are Don Quijote and Mandala, which has excellent batidos (milkshakes), but be forewarned that milkshakes in Spain are more like thick chocolate milk than Cook Out. Find your favorite(s).
Some cafés charge a higher amount for your food or beverage if you sit at a table than if you sit at the bar, as there is no tipping (often resulting in poorer service than you typically receive in the States. The reason they charge more at tables is because you are served by a waiter and waiters in Europe are paid a salary; tips do not count much for them since there is not the 15% or 20% gratuity principle. Besides, waiters do their job as a life profession). Unless there are many tables, you will probably not be waited on, so you can order at the bar. You should pay immediately if you take your food/drink to a table rather than waiting till you leave to settle your tab. If you are unsure about whether they have table service, just walk in, sit down, and if a waiter/waitress doesn't approach you within a few minutes, go order at the bar.
Tapas or pinchos are simply small portions of various foods that you can order with your drink, usually with beer, wine or sangría. The most common (and edible) tapas are tortilla española (it is a potato omelette, sometimes called tortilla de patatas) usually served with bread, fried calamari, patatas bravas (fried potatoes with a spicy sauce), olives, cheese, tuna, egg, chicken, or whatever else you can identify. Other tapas options for the more brave among you include items like octopus and various fish-related delicacies. In Salamanca, some of the best places to go for tapas include Don Quijote and Mandala. Sometimes the bars charge you extra for the tapas, and sometimes they are free with your drink. Almost every bar has its tapas on display.
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.8 (2007-04-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2007 [[abego Software|http://www.abego-software.de]]|
|''TiddlyWiki:''|1.2.38+, 2.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
!Description
Create customizable lists, tables etc. for your selections of tiddlers. Specify the tiddlers to include and their order through a powerful language.
''Syntax:''
|>|{{{<<}}}''forEachTiddler'' [''in'' //tiddlyWikiPath//] [''where'' //whereCondition//] [''sortBy'' //sortExpression// [''ascending'' //or// ''descending'']] [''script'' //scriptText//] [//action// [//actionParameters//]]{{{>>}}}|
|//tiddlyWikiPath//|The filepath to the TiddlyWiki the macro should work on. When missing the current TiddlyWiki is used.|
|//whereCondition//|(quoted) JavaScript boolean expression. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//sortExpression//|(quoted) JavaScript expression returning "comparable" objects (using '{{{<}}}','{{{>}}}','{{{==}}}'. May refer to the build-in variables {{{tiddler}}} and {{{context}}}.|
|//scriptText//|(quoted) JavaScript text. Typically defines JavaScript functions that are called by the various JavaScript expressions (whereClause, sortClause, action arguments,...)|
|//action//|The action that should be performed on every selected tiddler, in the given order. By default the actions [[addToList|AddToListAction]] and [[write|WriteAction]] are supported. When no action is specified [[addToList|AddToListAction]] is used.|
|//actionParameters//|(action specific) parameters the action may refer while processing the tiddlers (see action descriptions for details). <<tiddler [[JavaScript in actionParameters]]>>|
|>|~~Syntax formatting: Keywords in ''bold'', optional parts in [...]. 'or' means that exactly one of the two alternatives must exist.~~|
See details see [[ForEachTiddlerMacro]] and [[ForEachTiddlerExamples]].
!Revision history
* v1.0.8 (2007-04-12)
** Adapted to latest TiddlyWiki 2.2 Beta importTiddlyWiki API (introduced with changeset 2004). TiddlyWiki 2.2 Beta builds prior to changeset 2004 are no longer supported (but TiddlyWiki 2.1 and earlier, of cause)
* v1.0.7 (2007-03-28)
** Also support "pre" formatted TiddlyWikis (introduced with TW 2.2) (when using "in" clause to work on external tiddlers)
* v1.0.6 (2006-09-16)
** Context provides "viewerTiddler", i.e. the tiddler used to view the macro. Most times this is equal to the "inTiddler", but when using the "tiddler" macro both may be different.
** Support "begin", "end" and "none" expressions in "write" action
* v1.0.5 (2006-02-05)
** Pass tiddler containing the macro with wikify, context object also holds reference to tiddler containing the macro ("inTiddler"). Thanks to SimonBaird.
** Support Firefox 1.5.0.1
** Internal
*** Make "JSLint" conform
*** "Only install once"
* v1.0.4 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.3 (2005-12-22)
** Features:
*** Write output to a file supports multi-byte environments (Thanks to Bram Chen)
*** Provide API to access the forEachTiddler functionality directly through JavaScript (see getTiddlers and performMacro)
** Enhancements:
*** Improved error messages on InternetExplorer.
* v1.0.2 (2005-12-10)
** Features:
*** context object also holds reference to store (TiddlyWiki)
** Fixed Bugs:
*** ForEachTiddler 1.0.1 has broken support on win32 Opera 8.51 (Thanks to BrunoSabin for reporting)
* v1.0.1 (2005-12-08)
** Features:
*** Access tiddlers stored in separated TiddlyWikis through the "in" option. I.e. you are no longer limited to only work on the "current TiddlyWiki".
*** Write output to an external file using the "toFile" option of the "write" action. With this option you may write your customized tiddler exports.
*** Use the "script" section to define "helper" JavaScript functions etc. to be used in the various JavaScript expressions (whereClause, sortClause, action arguments,...).
*** Access and store context information for the current forEachTiddler invocation (through the build-in "context" object) .
*** Improved script evaluation (for where/sort clause and write scripts).
* v1.0.0 (2005-11-20)
** initial version
!Code
***/
//{{{
//============================================================================
//============================================================================
// ForEachTiddlerPlugin
//============================================================================
//============================================================================
// Only install once
if (!version.extensions.ForEachTiddlerPlugin) {
if (!window.abego) window.abego = {};
version.extensions.ForEachTiddlerPlugin = {
major: 1, minor: 0, revision: 8,
date: new Date(2007,3,12),
source: "http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin",
licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
copyright: "Copyright (c) abego Software GmbH, 2005-2007 (www.abego-software.de)"
};
// For backward compatibility with TW 1.2.x
//
if (!TiddlyWiki.prototype.forEachTiddler) {
TiddlyWiki.prototype.forEachTiddler = function(callback) {
for(var t in this.tiddlers) {
callback.call(this,t,this.tiddlers[t]);
}
};
}
//============================================================================
// forEachTiddler Macro
//============================================================================
version.extensions.forEachTiddler = {
major: 1, minor: 0, revision: 8, date: new Date(2007,3,12), provider: "http://tiddlywiki.abego-software.de"};
// ---------------------------------------------------------------------------
// Configurations and constants
// ---------------------------------------------------------------------------
config.macros.forEachTiddler = {
// Standard Properties
label: "forEachTiddler",
prompt: "Perform actions on a (sorted) selection of tiddlers",
// actions
actions: {
addToList: {},
write: {}
}
};
// ---------------------------------------------------------------------------
// The forEachTiddler Macro Handler
// ---------------------------------------------------------------------------
config.macros.forEachTiddler.getContainingTiddler = function(e) {
while(e && !hasClass(e,"tiddler"))
e = e.parentNode;
var title = e ? e.getAttribute("tiddler") : null;
return title ? store.getTiddler(title) : null;
};
config.macros.forEachTiddler.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
// config.macros.forEachTiddler.traceMacroCall(place,macroName,params,wikifier,paramString,tiddler);
if (!tiddler) tiddler = config.macros.forEachTiddler.getContainingTiddler(place);
// --- Parsing ------------------------------------------
var i = 0; // index running over the params
// Parse the "in" clause
var tiddlyWikiPath = undefined;
if ((i < params.length) && params[i] == "in") {
i++;
if (i >= params.length) {
this.handleError(place, "TiddlyWiki path expected behind 'in'.");
return;
}
tiddlyWikiPath = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the where clause
var whereClause ="true";
if ((i < params.length) && params[i] == "where") {
i++;
whereClause = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the sort stuff
var sortClause = null;
var sortAscending = true;
if ((i < params.length) && params[i] == "sortBy") {
i++;
if (i >= params.length) {
this.handleError(place, "sortClause missing behind 'sortBy'.");
return;
}
sortClause = this.paramEncode(params[i]);
i++;
if ((i < params.length) && (params[i] == "ascending" || params[i] == "descending")) {
sortAscending = params[i] == "ascending";
i++;
}
}
// Parse the script
var scriptText = null;
if ((i < params.length) && params[i] == "script") {
i++;
scriptText = this.paramEncode((i < params.length) ? params[i] : "");
i++;
}
// Parse the action.
// When we are already at the end use the default action
var actionName = "addToList";
if (i < params.length) {
if (!config.macros.forEachTiddler.actions[params[i]]) {
this.handleError(place, "Unknown action '"+params[i]+"'.");
return;
} else {
actionName = params[i];
i++;
}
}
// Get the action parameter
// (the parsing is done inside the individual action implementation.)
var actionParameter = params.slice(i);
// --- Processing ------------------------------------------
try {
this.performMacro({
place: place,
inTiddler: tiddler,
whereClause: whereClause,
sortClause: sortClause,
sortAscending: sortAscending,
actionName: actionName,
actionParameter: actionParameter,
scriptText: scriptText,
tiddlyWikiPath: tiddlyWikiPath});
} catch (e) {
this.handleError(place, e);
}
};
// Returns an object with properties "tiddlers" and "context".
// tiddlers holds the (sorted) tiddlers selected by the parameter,
// context the context of the execution of the macro.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlersAndContext = function(parameter) {
var context = config.macros.forEachTiddler.createContext(parameter.place, parameter.whereClause, parameter.sortClause, parameter.sortAscending, parameter.actionName, parameter.actionParameter, parameter.scriptText, parameter.tiddlyWikiPath, parameter.inTiddler);
var tiddlyWiki = parameter.tiddlyWikiPath ? this.loadTiddlyWiki(parameter.tiddlyWikiPath) : store;
context["tiddlyWiki"] = tiddlyWiki;
// Get the tiddlers, as defined by the whereClause
var tiddlers = this.findTiddlers(parameter.whereClause, context, tiddlyWiki);
context["tiddlers"] = tiddlers;
// Sort the tiddlers, when sorting is required.
if (parameter.sortClause) {
this.sortTiddlers(tiddlers, parameter.sortClause, parameter.sortAscending, context);
}
return {tiddlers: tiddlers, context: context};
};
// Returns the (sorted) tiddlers selected by the parameter.
//
// The action is not yet performed.
//
// @parameter see performMacro
//
config.macros.forEachTiddler.getTiddlers = function(parameter) {
return this.getTiddlersAndContext(parameter).tiddlers;
};
// Performs the macros with the given parameter.
//
// @param parameter holds the parameter of the macro as separate properties.
// The following properties are supported:
//
// place
// whereClause
// sortClause
// sortAscending
// actionName
// actionParameter
// scriptText
// tiddlyWikiPath
//
// All properties are optional.
// For most actions the place property must be defined.
//
config.macros.forEachTiddler.performMacro = function(parameter) {
var tiddlersAndContext = this.getTiddlersAndContext(parameter);
// Perform the action
var actionName = parameter.actionName ? parameter.actionName : "addToList";
var action = config.macros.forEachTiddler.actions[actionName];
if (!action) {
this.handleError(parameter.place, "Unknown action '"+actionName+"'.");
return;
}
var actionHandler = action.handler;
actionHandler(parameter.place, tiddlersAndContext.tiddlers, parameter.actionParameter, tiddlersAndContext.context);
};
// ---------------------------------------------------------------------------
// The actions
// ---------------------------------------------------------------------------
// Internal.
//
// --- The addToList Action -----------------------------------------------
//
config.macros.forEachTiddler.actions.addToList.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "addToList", parameter, p);
return;
}
// Perform the action.
var list = document.createElement("ul");
place.appendChild(list);
for (var i = 0; i < tiddlers.length; i++) {
var tiddler = tiddlers[i];
var listItem = document.createElement("li");
list.appendChild(listItem);
createTiddlyLink(listItem, tiddler.title, true);
}
};
abego.parseNamedParameter = function(name, parameter, i) {
var beginExpression = null;
if ((i < parameter.length) && parameter[i] == name) {
i++;
if (i >= parameter.length) {
throw "Missing text behind '%0'".format([name]);
}
return config.macros.forEachTiddler.paramEncode(parameter[i]);
}
return null;
}
// Internal.
//
// --- The write Action ---------------------------------------------------
//
config.macros.forEachTiddler.actions.write.handler = function(place, tiddlers, parameter, context) {
// Parse the parameter
var p = 0;
if (p >= parameter.length) {
this.handleError(place, "Missing expression behind 'write'.");
return;
}
var textExpression = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
// Parse the "begin" option
var beginExpression = abego.parseNamedParameter("begin", parameter, p);
if (beginExpression !== null)
p += 2;
var endExpression = abego.parseNamedParameter("end", parameter, p);
if (endExpression !== null)
p += 2;
var noneExpression = abego.parseNamedParameter("none", parameter, p);
if (noneExpression !== null)
p += 2;
// Parse the "toFile" option
var filename = null;
var lineSeparator = undefined;
if ((p < parameter.length) && parameter[p] == "toFile") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Filename expected behind 'toFile' of 'write' action.");
return;
}
filename = config.macros.forEachTiddler.getLocalPath(config.macros.forEachTiddler.paramEncode(parameter[p]));
p++;
if ((p < parameter.length) && parameter[p] == "withLineSeparator") {
p++;
if (p >= parameter.length) {
this.handleError(place, "Line separator text expected behind 'withLineSeparator' of 'write' action.");
return;
}
lineSeparator = config.macros.forEachTiddler.paramEncode(parameter[p]);
p++;
}
}
// Check for extra parameters
if (parameter.length > p) {
config.macros.forEachTiddler.createExtraParameterErrorElement(place, "write", parameter, p);
return;
}
// Perform the action.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(textExpression, context);
var count = tiddlers.length;
var text = "";
if (count > 0 && beginExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(beginExpression, context)(undefined, context, count, undefined);
for (var i = 0; i < count; i++) {
var tiddler = tiddlers[i];
text += func(tiddler, context, count, i);
}
if (count > 0 && endExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(endExpression, context)(undefined, context, count, undefined);
if (count == 0 && noneExpression)
text += config.macros.forEachTiddler.getEvalTiddlerFunction(noneExpression, context)(undefined, context, count, undefined);
if (filename) {
if (lineSeparator !== undefined) {
lineSeparator = lineSeparator.replace(/\\n/mg, "\n").replace(/\\r/mg, "\r");
text = text.replace(/\n/mg,lineSeparator);
}
saveFile(filename, convertUnicodeToUTF8(text));
} else {
var wrapper = createTiddlyElement(place, "span");
wikify(text, wrapper, null/* highlightRegExp */, context.inTiddler);
}
};
// ---------------------------------------------------------------------------
// Helpers
// ---------------------------------------------------------------------------
// Internal.
//
config.macros.forEachTiddler.createContext = function(placeParam, whereClauseParam, sortClauseParam, sortAscendingParam, actionNameParam, actionParameterParam, scriptText, tiddlyWikiPathParam, inTiddlerParam) {
return {
place : placeParam,
whereClause : whereClauseParam,
sortClause : sortClauseParam,
sortAscending : sortAscendingParam,
script : scriptText,
actionName : actionNameParam,
actionParameter : actionParameterParam,
tiddlyWikiPath : tiddlyWikiPathParam,
inTiddler : inTiddlerParam, // the tiddler containing the <<forEachTiddler ...>> macro call.
viewerTiddler : config.macros.forEachTiddler.getContainingTiddler(placeParam) // the tiddler showing the forEachTiddler result
};
};
// Internal.
//
// Returns a TiddlyWiki with the tiddlers loaded from the TiddlyWiki of
// the given path.
//
config.macros.forEachTiddler.loadTiddlyWiki = function(path, idPrefix) {
if (!idPrefix) {
idPrefix = "store";
}
var lenPrefix = idPrefix.length;
// Read the content of the given file
var content = loadFile(this.getLocalPath(path));
if(content === null) {
throw "TiddlyWiki '"+path+"' not found.";
}
var tiddlyWiki = new TiddlyWiki();
// Starting with TW 2.2 there is a helper function to import the tiddlers
if (tiddlyWiki.importTiddlyWiki) {
if (!tiddlyWiki.importTiddlyWiki(content))
throw "File '"+path+"' is not a TiddlyWiki.";
tiddlyWiki.dirty = false;
return tiddlyWiki;
}
// The legacy code, for TW < 2.2
// Locate the storeArea div's
var posOpeningDiv = content.indexOf(startSaveArea);
var posClosingDiv = content.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1)) {
throw "File '"+path+"' is not a TiddlyWiki.";
}
var storageText = content.substr(posOpeningDiv + startSaveArea.length, posClosingDiv);
// Create a "div" element that contains the storage text
var myStorageDiv = document.createElement("div");
myStorageDiv.innerHTML = storageText;
myStorageDiv.normalize();
// Create all tiddlers in a new TiddlyWiki
// (following code is modified copy of TiddlyWiki.prototype.loadFromDiv)
var store = myStorageDiv.childNodes;
for(var t = 0; t < store.length; t++) {
var e = store[t];
var title = null;
if(e.getAttribute)
title = e.getAttribute("tiddler");
if(!title && e.id && e.id.substr(0,lenPrefix) == idPrefix)
title = e.id.substr(lenPrefix);
if(title && title !== "") {
var tiddler = tiddlyWiki.createTiddler(title);
tiddler.loadFromDiv(e,title);
}
}
tiddlyWiki.dirty = false;
return tiddlyWiki;
};
// Internal.
//
// Returns a function that has a function body returning the given javaScriptExpression.
// The function has the parameters:
//
// (tiddler, context, count, index)
//
config.macros.forEachTiddler.getEvalTiddlerFunction = function (javaScriptExpression, context) {
var script = context["script"];
var functionText = "var theFunction = function(tiddler, context, count, index) { return "+javaScriptExpression+"}";
var fullText = (script ? script+";" : "")+functionText+";theFunction;";
return eval(fullText);
};
// Internal.
//
config.macros.forEachTiddler.findTiddlers = function(whereClause, context, tiddlyWiki) {
var result = [];
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(whereClause, context);
tiddlyWiki.forEachTiddler(function(title,tiddler) {
if (func(tiddler, context, undefined, undefined)) {
result.push(tiddler);
}
});
return result;
};
// Internal.
//
config.macros.forEachTiddler.createExtraParameterErrorElement = function(place, actionName, parameter, firstUnusedIndex) {
var message = "Extra parameter behind '"+actionName+"':";
for (var i = firstUnusedIndex; i < parameter.length; i++) {
message += " "+parameter[i];
}
this.handleError(place, message);
};
// Internal.
//
config.macros.forEachTiddler.sortAscending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? -1
: +1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortDescending = function(tiddlerA, tiddlerB) {
var result =
(tiddlerA.forEachTiddlerSortValue == tiddlerB.forEachTiddlerSortValue)
? 0
: (tiddlerA.forEachTiddlerSortValue < tiddlerB.forEachTiddlerSortValue)
? +1
: -1;
return result;
};
// Internal.
//
config.macros.forEachTiddler.sortTiddlers = function(tiddlers, sortClause, ascending, context) {
// To avoid evaluating the sortClause whenever two items are compared
// we pre-calculate the sortValue for every item in the array and store it in a
// temporary property ("forEachTiddlerSortValue") of the tiddlers.
var func = config.macros.forEachTiddler.getEvalTiddlerFunction(sortClause, context);
var count = tiddlers.length;
var i;
for (i = 0; i < count; i++) {
var tiddler = tiddlers[i];
tiddler.forEachTiddlerSortValue = func(tiddler,context, undefined, undefined);
}
// Do the sorting
tiddlers.sort(ascending ? this.sortAscending : this.sortDescending);
// Delete the temporary property that holds the sortValue.
for (i = 0; i < tiddlers.length; i++) {
delete tiddlers[i].forEachTiddlerSortValue;
}
};
// Internal.
//
config.macros.forEachTiddler.trace = function(message) {
displayMessage(message);
};
// Internal.
//
config.macros.forEachTiddler.traceMacroCall = function(place,macroName,params) {
var message ="<<"+macroName;
for (var i = 0; i < params.length; i++) {
message += " "+params[i];
}
message += ">>";
displayMessage(message);
};
// Internal.
//
// Creates an element that holds an error message
//
config.macros.forEachTiddler.createErrorElement = function(place, exception) {
var message = (exception.description) ? exception.description : exception.toString();
return createTiddlyElement(place,"span",null,"forEachTiddlerError","<<forEachTiddler ...>>: "+message);
};
// Internal.
//
// @param place [may be null]
//
config.macros.forEachTiddler.handleError = function(place, exception) {
if (place) {
this.createErrorElement(place, exception);
} else {
throw exception;
}
};
// Internal.
//
// Encodes the given string.
//
// Replaces
// "$))" to ">>"
// "$)" to ">"
//
config.macros.forEachTiddler.paramEncode = function(s) {
var reGTGT = new RegExp("\\$\\)\\)","mg");
var reGT = new RegExp("\\$\\)","mg");
return s.replace(reGTGT, ">>").replace(reGT, ">");
};
// Internal.
//
// Returns the given original path (that is a file path, starting with "file:")
// as a path to a local file, in the systems native file format.
//
// Location information in the originalPath (i.e. the "#" and stuff following)
// is stripped.
//
config.macros.forEachTiddler.getLocalPath = function(originalPath) {
// Remove any location part of the URL
var hashPos = originalPath.indexOf("#");
if(hashPos != -1)
originalPath = originalPath.substr(0,hashPos);
// Convert to a native file format assuming
// "file:///x:/path/path/path..." - pc local file --> "x:\path\path\path..."
// "file://///server/share/path/path/path..." - FireFox pc network file --> "\\server\share\path\path\path..."
// "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."
// "file://server/share/path/path/path..." - pc network file --> "\\server\share\path\path\path..."
var localPath;
if(originalPath.charAt(9) == ":") // pc local file
localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file://///") === 0) // FireFox pc network file
localPath = "\\\\" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\\");
else if(originalPath.indexOf("file:///") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(7));
else if(originalPath.indexOf("file:/") === 0) // mac/unix local file
localPath = unescape(originalPath.substr(5));
else // pc network file
localPath = "\\\\" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\\");
return localPath;
};
// ---------------------------------------------------------------------------
// Stylesheet Extensions (may be overridden by local StyleSheet)
// ---------------------------------------------------------------------------
//
setStylesheet(
".forEachTiddlerError{color: #ffffff;background-color: #880000;}",
"forEachTiddler");
//============================================================================
// End of forEachTiddler Macro
//============================================================================
//============================================================================
// String.startsWith Function
//============================================================================
//
// Returns true if the string starts with the given prefix, false otherwise.
//
version.extensions["String.startsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.startsWith = function(prefix) {
var n = prefix.length;
return (this.length >= n) && (this.slice(0, n) == prefix);
};
//============================================================================
// String.endsWith Function
//============================================================================
//
// Returns true if the string ends with the given suffix, false otherwise.
//
version.extensions["String.endsWith"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.endsWith = function(suffix) {
var n = suffix.length;
return (this.length >= n) && (this.right(n) == suffix);
};
//============================================================================
// String.contains Function
//============================================================================
//
// Returns true when the string contains the given substring, false otherwise.
//
version.extensions["String.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
String.prototype.contains = function(substring) {
return this.indexOf(substring) >= 0;
};
//============================================================================
// Array.indexOf Function
//============================================================================
//
// Returns the index of the first occurance of the given item in the array or
// -1 when no such item exists.
//
// @param item [may be null]
//
version.extensions["Array.indexOf"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
//============================================================================
// Array.contains Function
//============================================================================
//
// Returns true when the array contains the given item, otherwise false.
//
// @param item [may be null]
//
version.extensions["Array.contains"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
};
//============================================================================
// Array.containsAny Function
//============================================================================
//
// Returns true when the array contains at least one of the elements
// of the item. Otherwise (or when items contains no elements) false is returned.
//
version.extensions["Array.containsAny"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAny = function(items) {
for(var i = 0; i < items.length; i++) {
if (this.contains(items[i])) {
return true;
}
}
return false;
};
//============================================================================
// Array.containsAll Function
//============================================================================
//
// Returns true when the array contains all the items, otherwise false.
//
// When items is null false is returned (even if the array contains a null).
//
// @param items [may be null]
//
version.extensions["Array.containsAll"] = {major: 1, minor: 0, revision: 0, date: new Date(2005,11,20), provider: "http://tiddlywiki.abego-software.de"};
//
Array.prototype.containsAll = function(items) {
for(var i = 0; i < items.length; i++) {
if (!this.contains(items[i])) {
return false;
}
}
return true;
};
} // of "install only once"
// Used Globals (for JSLint) ==============
// ... DOM
/*global document */
// ... TiddlyWiki Core
/*global convertUnicodeToUTF8, createTiddlyElement, createTiddlyLink,
displayMessage, endSaveArea, hasClass, loadFile, saveFile,
startSaveArea, store, wikify */
//}}}
/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
/***
|Name|FramedLinksPlugin|
|Source|http://www.TiddlyTools.com/#FramedLinksPlugin|
|Version|1.0.5|
|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|createExternalLink|
|Options|##Configuration|
|Description|clicking an external link opens an IFRAME following the link instead of opening a new tab/window|
This plugi