Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
/***
|Name|CalendarPlugin|
|Source|http://www.TiddlyTools.com/#CalendarPlugin|
|Version|2008.09.09|
|Author|Eric Shulman|
|Original Author|SteveRumsby|
|License|unknown|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Options|##Configuration|
|Description|display monthly and yearly calendars|
NOTE: For enhanced date display (including popups), you must also install [[DatePlugin]]
!!!!!Usage:
<<<
|{{{<<calendar>>}}}|Produce a full-year calendar for the current year|
|{{{<<calendar year>>}}}|Produce a full-year calendar for the given year|
|{{{<<calendar year month>>}}}|Produce a one-month calendar for the given month and year|
|{{{<<calendar thismonth>>}}}|Produce a one-month calendar for the current month|
|{{{<<calendar lastmonth>>}}}|Produce a one-month calendar for last month|
|{{{<<calendar nextmonth>>}}}|Produce a one-month calendar for next month|
|{{{<<calendar +n>>}}}<br>{{{<<calendar -n>>}}}|Produce a one-month calendar for a month +/- 'n' months from now|
<<<
!!!!!Configuration:
<<<
|''First day of week:''<br>{{{config.options.txtCalFirstDay}}}|<<option txtCalFirstDay>>|(Monday = 0, Sunday = 6)|
|''First day of weekend:''<br>{{{config.options.txtCalStartOfWeekend}}}|<<option txtCalStartOfWeekend>>|(Monday = 0, Sunday = 6)|
<<option chkDisplayWeekNumbers>> Display week numbers //(note: Monday will be used as the start of the week)//
|''Week number display format:''<br>{{{config.options.txtWeekNumberDisplayFormat }}}|<<option txtWeekNumberDisplayFormat >>|
|''Week number link format:''<br>{{{config.options.txtWeekNumberLinkFormat }}}|<<option txtWeekNumberLinkFormat >>|
<<<
!!!!!Revisions
<<<
2008.09.10: added "+n" (and "-n") param to permit display of relative months (e.g., "+6" means "six months from now", "-3" means "three months ago". Based on suggestion from Jean.
2008.06.17: added support for config.macros.calendar.todaybg
2008.02.27: in handler(), DON'T set hard-coded default date format, so that *customized* value (pre-defined in config.macros.calendar.journalDateFmt is used.
2008.02.17: in createCalendarYear(), fix next/previous year calculation (use parseInt() to convert to numeric value). Also, use journalDateFmt for date linking when NOT using [[DatePlugin]].
2008.02.16: in createCalendarDay(), week numbers now created as TiddlyLinks, allowing quick creation/navigation to 'weekly' journals (based on request from Kashgarinn)
2008.01.08: in createCalendarMonthHeader(), "month year" heading is now created as TiddlyLink, allowing quick creation/navigation to 'month-at-a-time' journals
2007.11.30: added "return false" to onclick handlers (prevent IE from opening blank pages)
2006.08.23: added handling for weeknumbers (code supplied by Martin Budden (see "wn**" comment marks). Also, incorporated updated by Jeremy Sheeley to add caching for reminders (see [[ReminderMacros]], if installed)
2005.10.30: in config.macros.calendar.handler(), use "tbody" element for IE compatibility. Also, fix year calculation for IE's getYear() function (which returns '2005' instead of '105'). Also, in createCalendarDays(), use showDate() function (see [[DatePlugin]], if installed) to render autostyled date with linked popup. Updated calendar stylesheet definition: use .calendar class-specific selectors, add text centering and margin settings
2006.05.29: added journalDateFmt handling
<<<
***/
/***
!!!!!Code section:
***/
//{{{
version.extensions.CalendarPlugin= { major: 0, minor: 7, revision: 0, date: new Date(2008, 6, 17)};
if(config.options.txtCalFirstDay == undefined)
config.options.txtCalFirstDay = 0;
if(config.options.txtCalStartOfWeekend == undefined)
config.options.txtCalStartOfWeekend = 5;
if(config.options.chkDisplayWeekNumbers == undefined)//wn**
config.options.chkDisplayWeekNumbers = false;
if(config.options.chkDisplayWeekNumbers)
config.options.txtCalFirstDay = 0;
if(config.options.txtWeekNumberDisplayFormat == undefined)//wn**
config.options.txtWeekNumberDisplayFormat = "w0WW";
if(config.options.txtWeekNumberLinkFormat == undefined)//wn**
config.options.txtWeekNumberLinkFormat = "YYYY-w0WW";
config.macros.calendar = {};
config.macros.calendar.monthnames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.macros.calendar.daynames = ["一", "二", "三", "四", "五", "六", "日"];
config.macros.calendar.todaybg = "#ccffcc";
config.macros.calendar.weekendbg = "#c0c0c0";
config.macros.calendar.monthbg = "#e0e0e0";
config.macros.calendar.holidaybg = "#ff8888";
config.macros.calendar.journalDateFmt = "DD MMM YYYY";
config.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
config.macros.calendar.holidays = ["11/06/2009", "12/06/2009", "18/06/2009", "19/06/2009"]; // Not sure this is required anymore - use reminders instead
//}}}
//{{{
function calendarIsHoliday(date) // Is the given date a holiday?
{
var longHoliday = date.formatString("0DD/0MM/YYYY");
var shortHoliday = date.formatString("0DD/0MM");
for(var i = 0; i < config.macros.calendar.holidays.length; i++) {
if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday)
return true;
}
return false;
}
//}}}
//{{{
config.macros.calendar.handler = function(place,macroName,params) {
var calendar = createTiddlyElement(place, "table", null, "calendar", null);
var tbody = createTiddlyElement(calendar, "tbody", null, null, null);
var today = new Date();
var year = today.getYear();
if (year<1900) year+=1900;
// get format for journal link by reading from SideBarOptions (ELS 5/29/06 - based on suggestion by Martin Budden)
var text = store.getTiddlerText("SideBarOptions");
var re = new RegExp("<<(?:newJournal)([^>]*)>>","mg"); var fm = re.exec(text);
if (fm && fm[1]!=null) { var pa=fm[1].readMacroParams(); if (pa[0]) this.journalDateFmt = pa[0]; }
var month=-1;
if (params[0] == "thismonth") {
var month=today.getMonth();
} else if (params[0] == "lastmonth") {
var month = today.getMonth()-1; if (month==-1) { month=11; year--; }
} else if (params[0] == "nextmonth") {
var month = today.getMonth()+1; if (month>11) { month=0; year++; }
} else if (params[0]&&"+-".indexOf(params[0].substr(0,1))!=-1) {
var month = today.getMonth()+parseInt(params[0]);
if (month>11) { year+=Math.floor(month/12); month%=12; };
if (month<0) { year+=Math.floor(month/12); month=12+month%12; }
} else if (params[0]) {
year = params[0];
if(params[1]) month=parseInt(params[1])-1;
if (month>11) month=11; if (month<0) month=0;
}
if (month!=-1) {
cacheReminders(new Date(year, month, 1, 0, 0), 31);
createCalendarOneMonth(tbody, year, month);
} else {
cacheReminders(new Date(year, 0, 1, 0, 0), 366);
createCalendarYear(tbody, year);
}
window.reminderCacheForCalendar = null;
}
//}}}
//{{{
//This global variable is used to store reminders that have been cached
//while the calendar is being rendered. It will be renulled after the calendar is fully rendered.
window.reminderCacheForCalendar = null;
//}}}
//{{{
function cacheReminders(date, leadtime)
{
if (window.findTiddlersWithReminders == null) return;
window.reminderCacheForCalendar = {};
var leadtimeHash = [];
leadtimeHash [0] = 0;
leadtimeHash [1] = leadtime;
var t = findTiddlersWithReminders(date, leadtimeHash, null, 1);
for(var i = 0; i < t.length; i++) {
//just tag it in the cache, so that when we're drawing days, we can bold this one.
window.reminderCacheForCalendar[t[i]["matchedDate"]] = "reminder:" + t[i]["params"]["title"];
}
}
//}}}
//{{{
function createCalendarOneMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, "tr", null, null, null);
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);
row = createTiddlyElement(calendar, "tr", null, null, null);
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarMonth(calendar, year, mon)
{
var row = createTiddlyElement(calendar, "tr", null, null, null);
createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);
row = createTiddlyElement(calendar, "tr", null, null, null);
createCalendarDayHeader(row, 1);
createCalendarDayRowsSingle(calendar, year, mon);
}
//}}}
//{{{
function createCalendarYear(calendar, year)
{
var row;
row = createTiddlyElement(calendar, "tr", null, null, null);
var back = createTiddlyElement(row, "td", null, null, null);
var backHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)-1);
return false; // consume click
};
createTiddlyButton(back, "<", "Previous year", backHandler);
back.align = "center";
var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);
yearHeader.align = "center";
yearHeader.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?22:19);//wn**
var fwd = createTiddlyElement(row, "td", null, null, null);
var fwdHandler = function() {
removeChildren(calendar);
createCalendarYear(calendar, parseInt(year)+1);
return false; // consume click
};
createTiddlyButton(fwd, ">", "Next year", fwdHandler);
fwd.align = "center";
createCalendarMonthRow(calendar, year, 0);
createCalendarMonthRow(calendar, year, 3);
createCalendarMonthRow(calendar, year, 6);
createCalendarMonthRow(calendar, year, 9);
}
//}}}
//{{{
function createCalendarMonthRow(cal, year, mon)
{
var row = createTiddlyElement(cal, "tr", null, null, null);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);
createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);
row = createTiddlyElement(cal, "tr", null, null, null);
createCalendarDayHeader(row, 3);
createCalendarDayRows(cal, year, mon);
}
//}}}
//{{{
function createCalendarMonthHeader(cal, row, name, nav, year, mon)
{
var month;
if (nav) {
var back = createTiddlyElement(row, "td", null, null, null);
back.align = "center";
back.style.background = config.macros.calendar.monthbg;
var backMonHandler = function() {
var newyear = year;
var newmon = mon-1;
if(newmon == -1) { newmon = 11; newyear = newyear-1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(back, "<", "Previous month", backMonHandler);
month = createTiddlyElement(row, "td", null, "calendarMonthname")
createTiddlyLink(month,name,true);
month.setAttribute("colSpan", config.options.chkDisplayWeekNumbers?6:5);//wn**
var fwd = createTiddlyElement(row, "td", null, null, null);
fwd.align = "center";
fwd.style.background = config.macros.calendar.monthbg;
var fwdMonHandler = function() {
var newyear = year;
var newmon = mon+1;
if(newmon == 12) { newmon = 0; newyear = newyear+1;}
removeChildren(cal);
cacheReminders(new Date(newyear, newmon , 1, 0, 0), 31);
createCalendarOneMonth(cal, newyear, newmon);
return false; // consume click
};
createTiddlyButton(fwd, ">", "Next month", fwdMonHandler);
} else {
month = createTiddlyElement(row, "td", null, "calendarMonthname", name)
month.setAttribute("colSpan",config.options.chkDisplayWeekNumbers?8:7);//wn**
}
month.align = "center";
month.style.background = config.macros.calendar.monthbg;
}
//}}}
//{{{
function createCalendarDayHeader(row, num)
{
var cell;
for(var i = 0; i < num; i++) {
if (config.options.chkDisplayWeekNumbers) createTiddlyElement(row, "td");//wn**
for(var j = 0; j < 7; j++) {
var d = j + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);
if(d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))
cell.style.background = config.macros.calendar.weekendbg;
}
}
}
//}}}
//{{{
function createCalendarDays(row, col, first, max, year, mon) {
var i;
if (config.options.chkDisplayWeekNumbers){
if (first<=max) {
var ww = new Date(year,mon,first);
var td=createTiddlyElement(row, "td");//wn**
var link=createTiddlyLink(td,ww.formatString(config.options.txtWeekNumberLinkFormat),false);
link.appendChild(document.createTextNode(ww.formatString(config.options.txtWeekNumberDisplayFormat)));
}
else createTiddlyElement(row, "td", null, null, null);//wn**
}
for(i = 0; i < col; i++)
createTiddlyElement(row, "td", null, null, null);
var day = first;
for(i = col; i < 7; i++) {
var d = i + (config.options.txtCalFirstDay - 0);
if(d > 6) d = d - 7;
var daycell = createTiddlyElement(row, "td", null, null, null);
var isaWeekend = ((d == (config.options.txtCalStartOfWeekend-0) || d == (config.options.txtCalStartOfWeekend-0+1))? true:false);
if(day > 0 && day <= max) {
var celldate = new Date(year, mon, day);
// ELS 2005.10.30: use <<date>> macro's showDate() function to create popup
// ELS 5/29/06 - use journalDateFmt
if (window.showDate)
showDate(daycell,celldate,"popup","DD",config.macros.calendar.journalDateFmt,true, isaWeekend);
else {
if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;
var title = celldate.formatString(config.macros.calendar.journalDateFmt);
if(calendarIsHoliday(celldate))
daycell.style.background = config.macros.calendar.holidaybg;
var now=new Date();
if ((now-celldate>=0) && (now-celldate<86400000)) // is today?
daycell.style.background = config.macros.calendar.todaybg;
if(window.findTiddlersWithReminders == null) {
var link = createTiddlyLink(daycell, title, false);
link.appendChild(document.createTextNode(day));
} else
var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);
}
}
day++;
}
}
//}}}
//{{{
// We've clicked on a day in a calendar - create a suitable pop-up of options.
// The pop-up should contain:
// * a link to create a new entry for that date
// * a link to create a new reminder for that date
// * an <hr>
// * the list of reminders for that date
// NOTE: The following code is only used when [[DatePlugin]] is not present
function onClickCalendarDate(e)
{
var button = this;
var date = button.getAttribute("title");
var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));
date = dat.formatString(config.macros.calendar.journalDateFmt);
var popup = createTiddlerPopup(this);
popup.appendChild(document.createTextNode(date));
var newReminder = function() {
var t = store.getTiddlers(date);
displayTiddler(null, date, 2, null, null, false, false);
if(t) {
document.getElementById("editorBody" + date).value += "\n<<reminder day:" + dat.getDate() +
" month:" + (dat.getMonth()+1) + " year:" + (dat.getYear()+1900) + " title: >>";
} else {
document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +
" month:" + (dat.getMonth()+1) +" year:" + (dat.getYear()+1900) + " title: >>";
}
return false; // consume click
};
var link = createTiddlyButton(popup, "New reminder", null, newReminder);
popup.appendChild(document.createElement("hr"));
var t = findTiddlersWithReminders(dat, [0,14], null, 1);
for(var i = 0; i < t.length; i++) {
link = createTiddlyLink(popup, t[i].tiddler, false);
link.appendChild(document.createTextNode(t[i].tiddler));
}
return false; // consume click
}
//}}}
//{{{
function calendarMaxDays(year, mon)
{
var max = config.macros.calendar.monthdays[mon];
if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) max++;
return max;
}
//}}}
//{{{
function createCalendarDayRows(cal, year, mon)
{
var row = createTiddlyElement(cal, "tr", null, null, null);
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1 + 7;
var day1 = -first1 + 1;
var first2 = (new Date(year, mon+1, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first2 < 0) first2 = first2 + 7;
var day2 = -first2 + 1;
var first3 = (new Date(year, mon+2, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first3 < 0) first3 = first3 + 7;
var day3 = -first3 + 1;
var max1 = calendarMaxDays(year, mon);
var max2 = calendarMaxDays(year, mon+1);
var max3 = calendarMaxDays(year, mon+2);
while(day1 <= max1 || day2 <= max2 || day3 <= max3) {
row = createTiddlyElement(cal, "tr", null, null, null);
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;
createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;
}
}
//}}}
//{{{
function createCalendarDayRowsSingle(cal, year, mon)
{
var row = createTiddlyElement(cal, "tr", null, null, null);
var first1 = (new Date(year, mon, 1)).getDay() -1 - (config.options.txtCalFirstDay-0);
if(first1 < 0) first1 = first1+ 7;
var day1 = -first1 + 1;
var max1 = calendarMaxDays(year, mon);
while(day1 <= max1) {
row = createTiddlyElement(cal, "tr", null, null, null);
createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;
}
}
//}}}
//{{{
setStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { text-align:center; } .calendar, .calendar a { margin:0px !important; padding:0px !important; }", "calendarStyles");
//}}}
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
/***
|''Name:''|ForEachTiddlerPlugin|
|''Version:''|1.0.5 (2006-02-05)|
|''Source:''|http://tiddlywiki.abego-software.de/#ForEachTiddlerPlugin|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|[[ForEachTiddlerMacro]] v1.0.5|
|''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.5
** 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) {
version.extensions.ForEachTiddlerPlugin = {major: 1, minor: 0, revision: 5, date: new Date(2006,2,5), source: "http://tiddlywiki.abego-software.de/#ForEachTiddlergPlugin"};
// 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: 5, date: new Date(2006,2,5), 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);
}
};
// 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 "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 = "";
for (var i = 0; i < count; i++) {
var tiddler = tiddlers[i];
text += func(tiddler, context, count, i);
}
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
};
};
// 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.";
}
// 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 tiddlyWiki = new TiddlyWiki();
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.
***/
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:
* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* MainMenu: The menu (usually on the left)
* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
/***
|''Name:''|LoadRemoteFileThroughProxy (previous LoadRemoteFileHijack)|
|''Description:''|When the TiddlyWiki file is located on the web (view over http) the content of [[SiteProxy]] tiddler is added in front of the file url. If [[SiteProxy]] does not exist "/proxy/" is added. |
|''Version:''|1.1.0|
|''Date:''|mar 17, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#LoadRemoteFileHijack|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
***/
//{{{
version.extensions.LoadRemoteFileThroughProxy = {
major: 1, minor: 1, revision: 0,
date: new Date("mar 17, 2007"),
source: "http://tiddlywiki.bidix.info/#LoadRemoteFileThroughProxy"};
if (!window.bidix) window.bidix = {}; // bidix namespace
if (!bidix.core) bidix.core = {};
bidix.core.loadRemoteFile = loadRemoteFile;
loadRemoteFile = function(url,callback,params)
{
if ((document.location.toString().substr(0,4) == "http") && (url.substr(0,4) == "http")){
url = store.getTiddlerText("SiteProxy", "/proxy/") + url;
}
return bidix.core.loadRemoteFile(url,callback,params);
}
//}}}
<<tag モノノ怪>>
<<tag 人物簡介>>
<<tag 劇情>>
<<tag 怪物簡介>>
<<tag 其他>>
<<tag 怪ayakashi其他故事>>
<<tag モノノ怪影音>>
[img[http://mononoke-anime.com/goods/images/goods03_img.jpg]]
<div class='header'>
<div class='titleLine'>
<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 macro='gradient vert #ffffff #cc9900'><a> </a><div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
</div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
/***
|''Name:''|PasswordOptionPlugin|
|''Description:''|Extends TiddlyWiki options with non encrypted password option.|
|''Version:''|1.0.2|
|''Date:''|Apr 19, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#PasswordOptionPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.PasswordOptionPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 19, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.2.0 (Beta 5)'
};
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordInputType = "password"; // password | text
setStylesheet(".pasOptionInput {width: 11em;}\n","passwordInputTypeStyle");
merge(config.macros.option.types, {
'pas': {
elementType: "input",
valueField: "value",
eventName: "onkeyup",
className: "pasOptionInput",
typeValue: config.macros.option.passwordInputType,
create: function(place,type,opt,className,desc) {
// password field
config.macros.option.genericCreate(place,'pas',opt,className,desc);
// checkbox linked with this password "save this password on this computer"
config.macros.option.genericCreate(place,'chk','chk'+opt,className,desc);
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
},
onChange: config.macros.option.genericOnChange
}
});
merge(config.optionHandlers['chk'], {
get: function(name) {
// is there an option linked with this chk ?
var opt = name.substr(3);
if (config.options[opt])
saveOptionCookie(opt);
return config.options[name] ? "true" : "false";
}
});
merge(config.optionHandlers, {
'pas': {
get: function(name) {
if (config.options["chk"+name]) {
return encodeCookie(config.options[name].toString());
} else {
return "";
}
},
set: function(name,value) {config.options[name] = decodeCookie(value);}
}
});
// need to reload options to load passwordOptions
loadOptionsCookie();
/*
if (!config.options['pasPassword'])
config.options['pasPassword'] = '';
merge(config.optionsDesc,{
pasPassword: "Test password"
});
*/
//}}}
/***
|''Name:''|~PopupMacro|
|''Version:''|1.0.0 (2006-05-09)|
|''Source:''|http://tw.lewcid.org/#PopupMacro|
|''Author:''|Saq Imtiaz|
|''Description:''|Create popups with custom content|
|''Documentation:''|[[PopupMacro Documentation|PopupMacroDocs]]|
|''~Requires:''|TW Version 2.0.8 or better|
***/
// /%
{{{
config.macros.popup = {};
config.macros.popup.arrow = (document.all?"▼":"▾");
config.macros.popup.handler = function(place,macroName,params,wikifier,paramString,theTiddler) {
if (!params[0] || !params[1])
{createTiddlyError(place,'missing macro parameters','missing label or content parameter');
return false;};
var label = params[0];
var source = (params[1]).replace(/\$\)\)/g,">>");
var nestedId = params[2]? params[2]: 'nestedpopup';
var onclick = function(event) {
if(!event){var event = window.event;}
var theTarget = resolveTarget(event);
var nested = (!isNested(theTarget));
if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}
else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};
var theId = (nested==false)? "popup" : nestedId;
var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);
Popup.stack.push({root: button, popup: popup});
wikify(source,popup);
Popup.show(popup,true);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
var button = createTiddlyButton(place, label+this.arrow,label, onclick, null);
};
window.isNested = function(e) {
while (e != null) {
var contentWrapper = document.getElementById("contentWrapper");
if (contentWrapper == e) return true;
e = e.parentNode;
}
return false;
};
setStylesheet(
".popup, .popup a, .popup a:visited {color: #fff;}\n"+
".popup a:hover {background: #014; color: #fff; border: none;}\n"+
".popup li , .popup ul, .popup ol {list-style:none !important; margin-left:0.3em !important; margin-right:0.3em; font-size:100%; padding-top:0.5px !important; padding:0px !important;}\n"+
"#nestedpopup {background:#2E5ADF; border: 1px solid #0331BF; margin-left:1em; }\n"+
"",
"CustomPopupStyles");
config.shadowTiddlers.PopupMacroDocs="The documentation is available [[here.|http://tw.lewcid.org/#PopupMacroDocs]]";
}}}
//%/
>飛行吧!我的愛!
>藥師慕少艾♥
[img[http://farm4.static.flickr.com/3207/3101540387_db39296b85_m.jpg]]
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "DD MMM YYYY" "journal">><<saveChanges>><<tiddler TspotSidebar>> <html>
<center>
<br />
<font size=2><del>小朱被萌殺的次數</del><br />拜訪次數</font>
<br/>javascript:;
<a href="http://www.easycounter.com/">
<img src="http://www.easycounter.com/counter.php?lumufish"
border="0" alt="Website Hit Counter"></a>
<br><a href="http://www.easycounter.com/">HTML Hit Counter</a>
</center>
</html>
>發便當(?)
<html>
<embed src="http://img217.imageshack.us/img217/6927/pilizero001vq7.swf" width="180" height="270"></embed>
</html>
>官網連結
[img[http://thm-a03.yimg.com/image/8d0e895bf20c2686][http://www.mononoke-anime.com/]]
老闆賣藥兼賣妖。 [img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1189911911.jpg]]
/***
!TiddlyWiki Classic Color Scheme
Designed by Jeremy Ruston
http://tiddlystyles.com/#theme:Classic
To use this color scheme copy the [[ClassicTiddlyWiki]] contents into a tiddler and name it 'StyleSheet' also grab the [[ClassicTemplate]] and copy its contents into a tiddler named 'PageTemplate'.
!Colors Used
*@@bgcolor(#630):color(#fff): #630@@
*@@bgcolor(#930): #930@@
*@@bgcolor(#996633): #963@@
*@@bgcolor(#c90): #c90@@
*@@bgcolor(#cf6): #cf6@@
*@@bgcolor(#cc9): #cc9@@
*@@bgcolor(#ba9): #ba9@@
*@@bgcolor(#996): #996@@
*@@bgcolor(#300):color(#fff): #300@@
*@@bgcolor(#000000):color(#fff): #000@@
*@@bgcolor(#666): #666@@
*@@bgcolor(#888): #888@@
*@@bgcolor(#aaa): #aaa@@
*@@bgcolor(#ddd): #ddd@@
*@@bgcolor(#eee): #eee@@
*@@bgcolor(#ffffff): #fff@@
*@@bgcolor(#f00): #f00@@
*@@bgcolor(#ff3): #ff3@@
!Generic Rules /%==============================================%/
***/
/*{{{*/
body {
background: #000;
color: #c90;
}
a{
color: #963;
}
a:hover{
background: #963;
color: #fff;
}
a img{
border: 0;
}
h1,h2,h3,h4,h5 {
background: #cc9;
}
/*}}}*/
/***
!Header /%==================================================%/
***/
/*{{{*/
.header{
background: #000;
}
.titleLine {
color: #fff;
padding: 5em 0em 1em .5em;
}
.titleLine a {
color: #ff3;
}
.titleLine a:hover {
background: transparent;
}
/*}}}*/
/***
!Main Menu /%=================================================%/
***/
/*{{{*/
#mainMenu .button {
color: #930;
}
#mainMenu .button:hover {
color: #ff3;
background: #930;
}
#mainMenu li{
list-style: none;
}
/*}}}*/
/***
!Sidebar options /%=================================================%/
~TiddlyLinks and buttons are treated identically in the sidebar and slider panel
***/
/*{{{*/
#sidebar {
background: #c90;
right: 0;
}
#sidebarOptions a{
color: #930;
border: 0;
margin: 0;
padding: .25em .5em;
}
#sidebarOptions a:hover {
color: #ff3;
background: #930;
}
#sidebarOptions a:active {
color: #930;
background: #ff3;
}
#sidebarOptions .sliderPanel {
background: #eea;
margin: 0;
}
#sidebarOptions .sliderPanel a {
color: #930;
}
#sidebarOptions .sliderPanel a:hover {
color: #ff3;
background: #930;
}
#sidebarOptions .sliderPanel a:active {
color: #930;
background: #ff3;
}
/*}}}*/
/***
!Sidebar tabs /%=================================================%/
***/
/*{{{*/
.tabSelected,.tabContents {
background: #eea;
border: 0;
}
.tabUnselected {
background: #c90;
}
#sidebarTabs {
background: #c90;
}
#sidebarTabs .tabSelected{
color: #ff3;
background: #963;
}
#sidebarTabs .tabUnselected {
color: #cf6;
background: #930;
}
#sidebarTabs .tabContents{
background: #963;
}
#sidebarTabs .txtMoreTab .tabSelected,
#sidebarTabs .txtMoreTab .tabSelected:hover{
background: #930;
color: #ff3;
}
#sidebarTabs .txtMoreTab .tabUnselected,
#sidebarTabs .txtMoreTab .tabUnselected:hover{
background: #300;
color: #ff3;
}
#sidebarTabs .txtMoreTab .tabContents {
background: #930;
}
#sidebarTabs .tabContents a {
color: #ff3;
border: 0;
}
#sidebarTabs .button.highlight,
#sidebarTabs .tabContents a:hover {
background: #ff3;
color: #300;
}
/*}}}*/
/***
!Message Area /%=================================================%/
***/
/*{{{*/
#messageArea {
background: #930;
color: #fff;
}
#messageArea a:link, #messageArea a:visited {
color: #c90;
}
#messageArea a:hover {
color: #963;
background: transparent;
}
#messageArea a:active {
color: #fff;
}
/*}}}*/
/***
!Popup /%=================================================%/
***/
/*{{{*/
.popup {
background: #eea;
border: 1px solid #930;
}
.popup hr {
color: #963;
background: #963;
border-bottom: 1px;
}
.popup li.disabled {
color: #ba9;
}
.popup li a, .popup li a:visited {
color: #300;
}
.popup li a:hover {
background: #930;
color: #eea;
}
/*}}}*/
/***
!Tiddler Display /%=================================================%/
***/
/*{{{*/
.tiddler .button {
color: #930;
}
.tiddler .button:hover {
color: #ff3;
background: #930;
}
.tiddler .button:active {
color: #fff;
background: #c90;
}
.shadow .title {
color: #888;
}
.title {
color: #422;
}
.subtitle {
color: #866;
}
.toolbar {
color: #aaa;
}
.toolbar a,
.toolbar a:hover{
border: 0;
}
.tagging, .tagged {
border: 1px solid #fff;
background-color: #ffc;
}
.selected .tagging, .selected .tagged {
border: 1px solid #aa6;
background-color: #ffc;
}
.tagging .listTitle, .tagged .listTitle {
color: #999999;
}
.footer {
color: #ddd;
}
.selected .footer {
color: #888;
}
.sparkline {
background: #eea;
border: 0;
}
.sparktick {
background: #930;
}
.errorButton {
color: #ff0;
background: #f00;
}
.zoomer {
color: #963;
border: 1px solid #963;
}
/*}}}*/
/***
''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/
***/
/*{{{*/
.viewer .button {
background: #c90;
color: #300;
border-right: 1px solid #300;
border-bottom: 1px solid #300;
}
.viewer .button:hover {
background: #eea;
color: #c90;
}
.viewer .imageLink{
background: transparent;
}
.viewer blockquote {
border-left: 3px solid #666;
}
.viewer table {
border: 2px solid #303030;
}
.viewer th, thead td {
background: #996;
border: 1px solid #606060;
color: #fff;
}
.viewer td, .viewer tr {
border: 1px solid #606060;
}
.viewer pre {
border: 1px solid #963;
background: #eea;
}
.viewer code {
color: #630;
}
.viewer hr {
border: 0;
border-top: dashed 1px #606060;
color: #666;
}
.highlight, .marked {
background: #ff3;
}
/*}}}*/
/***
''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/
***/
/*{{{*/
.editor input {
border: 1px solid #000;
}
.editor textarea {
border: 1px solid #000;
width: 100%;
}
.editorFooter {
color: #aaa;
}
.editorFooter a {
color: #930;
}
.editorFooter a:hover {
color: #ff9;
background: #930;
}
.editorFooter a:active {
color: #fff;
background: #c90;
}
/*}}}*/
/***
Description: Contains the stuff you need to use Tiddlyspot
Note, you also need UploadPlugin, PasswordOptionPlugin and LoadRemoteFileThroughProxy
from http://tiddlywiki.bidix.info for a complete working Tiddlyspot site.
***/
//{{{
// edit this if you are migrating sites or retrofitting an existing TW
config.tiddlyspotSiteId = 'lumufish';
// make it so you can by default see edit controls via http
config.options.chkHttpReadOnly = false;
window.readOnly = false; // make sure of it (for tw 2.2)
window.showBackstage = true; // show backstage too
// disable autosave in d3
if (window.location.protocol != "file:")
config.options.chkGTDLazyAutoSave = false;
// tweak shadow tiddlers to add upload button, password entry box etc
with (config.shadowTiddlers) {
SiteUrl = 'http://'+config.tiddlyspotSiteId+'.tiddlyspot.com';
SideBarOptions = SideBarOptions.replace(/(<<saveChanges>>)/,"$1<<tiddler TspotSidebar>>");
OptionsPanel = OptionsPanel.replace(/^/,"<<tiddler TspotOptions>>");
DefaultTiddlers = DefaultTiddlers.replace(/^/,"[[WelcomeToTiddlyspot]] ");
MainMenu = MainMenu.replace(/^/,"[[WelcomeToTiddlyspot]] ");
}
// create some shadow tiddler content
merge(config.shadowTiddlers,{
'WelcomeToTiddlyspot':[
"This document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //What now?// @@ Before you can save any changes, you need to enter your password in the form below. Then configure privacy and other site settings at your [[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]] (your control panel username is //" + config.tiddlyspotSiteId + "//).",
"<<tiddler TspotControls>>",
"See also GettingStarted.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working online// @@ You can edit this ~TiddlyWiki right now, and save your changes using the \"save to web\" button in the column on the right.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// @@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click \"upload\" and your ~TiddlyWiki will be saved back to tiddlyspot.com.",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Help!// @@ Find out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki.org|http://tiddlywiki.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help. If you have a tiddlyspot related problem email [[tiddlyspot support|mailto:support@tiddlyspot.com]].",
"",
"@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy :)// @@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments or suggestions."
].join("\n"),
'TspotControls':[
"| tiddlyspot password:|<<option pasUploadPassword>>|",
"| site management:|<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">>//(requires tiddlyspot password)//<br>[[control panel|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/controlpanel]], [[download (go offline)|http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download]]|",
"| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[blog|http://tiddlyspot.blogspot.com/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|"
].join("\n"),
'TspotSidebar':[
"<<upload http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/store.cgi index.html . . " + config.tiddlyspotSiteId + ">><html><a href='http://" + config.tiddlyspotSiteId + ".tiddlyspot.com/download' class='button'>download</a></html>"
].join("\n"),
'TspotOptions':[
"tiddlyspot password:",
"<<option pasUploadPassword>>",
""
].join("\n")
});
//}}}
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |
| 13/06/2009 17:44:24 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 10:33:05 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 10:33:11 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 10:33:18 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . | ok |
| 19/06/2009 10:57:03 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.php|http://lumufish.tiddlyspot.com/store.php]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | |
| 19/06/2009 10:57:08 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 11:08:49 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 11:09:11 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . | ok | ok |
| 19/06/2009 11:16:51 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
| 19/06/2009 11:19:50 | YourName | [[/|http://lumufish.tiddlyspot.com/]] | [[store.cgi|http://lumufish.tiddlyspot.com/store.cgi]] | . | [[index.html | http://lumufish.tiddlyspot.com/index.html]] | . |
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1186456724.jpg]]
!作品概要
本動畫為之前《怪 ayakashi》中的一篇「化貓」的續集、製作人員也是原班人馬。 延襲前作、以謎之賣藥郎作為主角,然後在「座敷童子」「海坊主」「無臉」「鵺(ぬえ)」「化貓」等五篇小故事中,以短篇故事形式來演出。
!故事簡介
[img[http://thm-a02.yimg.com/image/67f9c9b2e7a51918]]
[[主角 簡介]]
有一位在各地旅行並且攜帶斬魔劍斬除「妖怪」的賣藥郎。
只要在他以及劍的呼喚下,在賣藥男的面前就會出現一個又一個妖怪。
在那些因為恐懼而要求除去妖怪的人們的請求下,他會拿出這把劍並且告知人們,他需要清楚找出關於妖怪的三種要素:分別是因為人的因果,所形成的緣份(えにし)即是「形(かたち)」、事情的真相「真(まこと)」、心中的隱情「理(ことわり)」才能加以消滅。
就在這個除妖之旅上,他前往的地方,也就是各式各樣所謂的「人世」。並且在完成使命後,又乎然消失於大家眼前……。
|>|劇情簡介人物介紹|
|[img[http://thm-a01.yimg.com/image/afae3d8cc8c5a244]]|<<slider 000 劇情「怪~ayakashi~化貓」 "劇情介紹「怪~ayakashi~化貓」" "劇情介紹">>|
|~|<<slider 001 人物簡介「怪~ayakashi~化貓」 "人物簡介「怪~ayakashi~化貓」" "人物介紹">>|
|[img[http://thm-a04.yimg.com/image/4e1da0f47eafa496]]|<<slider 002 劇情「座敷童子」 "劇情介紹「座敷童子」" "劇情介紹">>|
|~|<<slider 003 人物簡介「座敷童子」 "人物簡介「座敷童子」" "人物介紹">>|
|[img[http://thm-a02.yimg.com/image/92a40dbcfd9a09e8]]|<<slider 004 劇情「海坊主」 "劇情介紹「海坊主」" "劇情介紹">>|
|~|<<slider 005 人物簡介「海坊主」 "人物簡介「海坊主」" "人物介紹">>|
|[img[http://thm-a03.yimg.com/image/614d292828346fa6]]|<<slider 006 劇情「のっぺらぼう」(無臉怪) "劇情介紹「のっぺらぼう」(無臉怪)" "劇情介紹">>|
|~|<<slider 007 人物簡介「のっぺらぼう」(無臉怪) "人物簡介「のっぺらぼう」(無臉怪)" "人物介紹">>|
|[img[http://thm-a01.yimg.com/image/50607655939c25d4]]|<<slider 008 劇情「鵺」 "劇情介紹「鵺」" "劇情介紹">>|
|~|<<slider 009 人物簡介「鵺」 "人物簡介「鵺」" "人物介紹">>|
|[img[http://thm-a02.yimg.com/image/d3a45884bbe73bac]]|<<slider 0010 劇情「化貓」 "劇情介紹「化貓」" "劇情介紹">>|
|~|<<slider 0011 人物簡介「化貓」 "人物簡介「化貓」" "人物介紹">>|
|<<tag モノノ怪OP+ED>>|
[img[http://thm-a02.yimg.com/image/778129fba5e52ca4]]→CD[img[http://thm-a04.yimg.com/image/94bc67203686bbd4]]→漫畫第一集[img[http://thm-a04.yimg.com/image/9446d9600fa31258]]→漫畫第二集
!他人心得
化貓﹣人性的醜惡
三套作品之中,以這套《化貓》的監督中村健治名氣最弱,但劇本的橫手美智子則是名劇本家了,由《機動警察》、《cowboy Bebop》到《棋魂》都是她操刀的。而這套也是三套作品之中唯一用上電腦CG技術的。而CG監督的橋本齊史曾擔任大友克洋的《STEAMBOY》的電腦特技,實力不必懷疑。
和之前兩套採用經典故事作籃本不同,這是一個原創故事,但中村健治卻拍得一點也不比之前兩位大師級的老手差,短短的三集之內將氣氛拉到最高點,以超現實的手法製造出極強的壓迫感。但這種超現實又和之前的不同,雖然之前的動畫手法很特別,但始終畫的仍是寫實的情景。但在《化貓》卻是一大堆超現實的表達手法,像天坪、符、還有無盡的空間等等,這都是相當具官能刺激的。在這種超現實空間之中再配合充滿解迷味道的說故事手法,使觀眾一步一步地走向真相,慢慢發現這個大富之家背後的卑劣,這種以解迷來引觀眾去追看的做法是之前兩套都沒有的。而更特別是利用電腦特技在畫面上加入像紙紋般的效果,使到本來顏色就很接近油畫的畫面很像是畫在繪卷上一樣,別具一格。
配音方面主要是櫻井孝宏、大塚周夫、稻田徹和ゆかな等好手,表現當然好,只是ゆかな似乎來來去去都只有那兩三招,實在很無力(笑)。
轉自http://format-acg.org/anime/forum/ayakashi.html
!「男女」って曲(ryが素敵なのでモノノ怪でもやってみた(蛋酒):
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/5pX2FLI_qkg&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/5pX2FLI_qkg&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
!【手描き】ハイパーさんもウッーウッーウマウマ(゚∀゚)【モノノ怪】 Mononoke (嗚嗚嗚哇嗚哇):
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/z4I-ReXylU0&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/z4I-ReXylU0&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
!【MAD】モノノ怪~凛として咲く花の如く~:
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/cNFyIFmgkZg&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/cNFyIFmgkZg&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
!【MAD】モノノ怪×椎名林檎(茎)【無臉男編】(有劇情捏他):
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/tT_6Hp9xhck&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/tT_6Hp9xhck&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
轉至:http://www.youtube.com/
!怪~ayakashi~化貓OP
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/QpN727WP5E0&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/QpN727WP5E0&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
!モノノ怪OP
<HTML>
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/98bUgrI3Mbk&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/98bUgrI3Mbk&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
</HTML>
!モノノ怪ED
<HTML>
<object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/hoo3hPOSs7o&hl=zh_TW&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hoo3hPOSs7o&hl=zh_TW&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object>
</HTML>
轉至:http://www.youtube.com/
!賣藥郎(男(おとこ) 聲優:櫻井孝宏)
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/normal_1188659311.jpg]]
(笑)
本作主角和謎之賣藥郎。 (其實是賣萌的 XD)本名・年齢・個性等都不明。本人說「我只是個賣藥的」並且也主張自己「是個人類」、但是耳朵尖長是唯一和人類不一樣的地方。是個在臉上抹上化妝,全身散發出妖豔氣息的美青年,所以遇見他而為他著迷的女性登場角色也不少。總是會擺出一副很有自信並且冷靜分析情況的樣子。持有一把能夠斬除妖怪的退魔之劍(聲 - 竹本英史)、使用時,需要知道對方的「形」、「真」、「理」三個要素。在完成能夠將劍出鞘的條件並「解放」它時,劍的樣貌會有所改變(賣藥郎的身體也會改變成全金色的模樣)。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1184780419.jpg]]
↑解放前 ↑解放後
另外他也持有著像是能夠作為結界的符咒和能夠偵測怪物動向的天平等不可思議的道具。順便一提,賣藥郎服裝的花色在正式設定資料集中是以蛾的模樣作為參考。
!!萌圖欣賞
[img[http://mononoke-anime.com/goods/images/goods03_img.jpg]]符咒
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1189911925.jpg]]全身照
[img[http://p9.p.pixnet.net/albums/userpics/9/7/251797/normal_4a1e7c5c28baa.jpg]]
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/normal_1189911906.jpg]]
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1189911806.jpg]]自攻自受(自重)
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1189911797.jpg]]自攻自受2(夠了)
!登場人物
|[img[http://pic.eslite.com/Upload/Attachment/200902/633691682632210000.jpg]]|
|蝴蝶(CV:桑島法子)氣質出眾的女性,因殺害丈夫一家入獄。從小即活在母親高壓且扭曲的母愛之下,造就她扭曲的個性,因為愛母親情願犧牲自我。|
|無臉男(CV:綠川光) 喜歡上蝴蝶的物怪,為了幫蝴蝶脫離現在的生活,慫恿她殺害丈夫一家,但卻是真心希望為她帶來幸福。|
|蝴蝶的親生母親(CV:真山亞子)早年喪夫,與蝴蝶相依為命。一心想將蝴蝶培養成「不管何時都不會令家門蒙羞」的優秀女性,以將蝴蝶嫁入權貴之家為最大夢想。|
!豋場人物
|[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1189919971.jpg]]|
|木下文平(CV:佐佐木誠二)火車駕駛員。也是新路線通車大典中,載運首批乘客的駕駛,曾不小心輾過市川節子的屍體。|
|福田壽太郎(CV:岩崎ひろし)涉及弊案的市長。於通車大典中帶領貴賓坐在第一節車廂,曾要求報社編輯森谷清毀掉不利自己的報導。|
|森谷清(CV:竹本英史)資深的新聞記者,現為主任編輯,市川節子的上司,是這個事件的關鍵人物。|
|市川節子(CV:折笠富美子)年輕、有衝勁的女記者,為了獨當一面,努力發掘醜聞。|
|野本千代(CV:尤加奈)在餐廳打工的年輕女學生,一心想成為女明星。|
|山口晴(CV:澤海陽子)嚴肅冷漠的寡婦,討厭與婆婆住在一起,因緣繼會下得到通車大典的車票。|
|門脇榮(CV:稻葉實) 負責偵辦市川節子案件的警察,總是使用命令式的口氣。|
|小林正男 剛從國小畢業的小男生,每天一大早就得起床送牛奶,在市川節子事件中,他是唯一的目擊者。|
!登場人物
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652148682448750.jpg]]|志乃(CV:田中理惠)曾在大戶人家幫傭,個性堅強、對孩子很溫柔,但是因為與該戶的少爺發生戀情甚至懷孕,而被迫離開,並被少爺派出的殺手追殺。身懷六甲的她來到百年旅館借住,沒想到卻在半夜遇到怪事!|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652148776667500.jpg]]|直助(CV:竹本英史)受雇於大戶人家的殺手。默默跟蹤志乃到百年旅館,並將之逼得走投無路,不過正當要下手殺害時,卻死於無形的力量。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652148868386250.jpg]]|久代(CV:藤田淑子) (左為現在的久代;右為年輕時的久代)百年旅館的老闆娘。過去曾經是妓院的老鴇,精明能幹,深諳人情世故。收留志乃的當晚,旅館內就發生詭異的殺人事件,而事情發生的原因,似乎與她有著密不可分的關係…|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652148972448750.jpg]]|德治(CV:鹽屋浩三) 在旅館工作的員工,負責站櫃檯。從很早以前就跟著久代老闆娘,對於久代的過去,不僅瞭若指掌,似乎也都有參與。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652149065730000.jpg]]|謎樣的小孩(CV:日比愛子) 出現在志乃房裡的謎樣小孩,他的真實身分是…?|
!登場人物
|[img[http://farm1.static.flickr.com/75/332734129_8e8d1de335_o.jpg]]|加世 坂井家的下僕。是個善良勇敢的好女孩。|
|[img[http://farm1.static.flickr.com/160/332734156_bf32b7fbbc_o.jpg]]|阿里 坂井家的下僕。|
|[img[http://farm1.static.flickr.com/135/332734191_f0fb1e5872_o.jpg]]|彌平 坂井家的下僕。對加世有意思。|
|[img[http://farm1.static.flickr.com/161/332734213_405a1f41d3_o.jpg]]|小田島 坂井家的奉公人(效忠主家的武士)。挺有趣的人。|
|[img[http://farm1.static.flickr.com/141/332734248_fa9c97ec55_o.jpg]]|坂井伊行 坂井家的當主。|
|[img[http://farm1.static.flickr.com/132/332734352_732bfb8c84_o.jpg]]|坂井伊國 伊行的長子。整天沉溺於酒光十色中。|
|[img[http://farm1.static.flickr.com/155/332734278_723f67d894_o.jpg]]|坂井伊顯 伊行的次子。無能的平庸之輩。|
|[img[http://farm1.static.flickr.com/164/332733886_bc61c14ebb_o.jpg]]|真央 因家道中落,坂井家的小姐真央出嫁,以償還家族債務。|
|[img[http://farm1.static.flickr.com/130/332734308_4d55cec9f0_o.jpg]]|坂井水江 伊顯的妻子、真央的母親。|
|[img[http://farm1.static.flickr.com/155/332734382_77a78be534_o.jpg]]|笹岡 坂井家的臣下。|
|[img[http://farm1.static.flickr.com/147/332734465_68a46c8c60_o.jpg]]|勝山 坂井家的臣下。|
http://blog.yam.com/pictor/article/7230484
!登場人物
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652160802448750.jpg]]|三國屋多門「空栗鼠丸」號的船主,是往來於南洋與日本的商人。喜好收集世界各地的珍奇物品,他最寶貝的就是從南洋運來的大金魚。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652160906823750.jpg]]|柳幻殃齊 略懂驅魔之術的咒術師,知識淵博、自視甚高,對於強者或新奇的事物不自禁地會露出讚賞與好奇的眼神;有時候在嚴肅緊張的場合,會說出一些令人不解的話,因此常被加世認為他在說冷笑話。最害怕的東西是…饅頭?|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652160999323750.jpg]]|加世 在《怪~ayakashi~化貓】裡曾出現過。曾在被化貓攻擊的坂井家幫傭,個性大而化之,熱情率直。離開坂井家之後,正打算搭船至江戶重找工作,沒想到又在船上遇到賣藥郎。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652161113073750.jpg]]|源慧大師 知名的五台寺僧侶,在他平靜的外表下,似乎隱藏著一些不為人知的過去。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652161559167500.jpg]]|菖源 負責服侍源慧大師的和尚,纖細膽小,陰柔如女性般的角色,他與源慧大師的關係十分曖昧,令人不禁會去想像兩人間那不能說的秘密。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652161659792500.jpg]]|佐佐木兵衛 欲前往江戶的冷血武士,個性陰森孤僻、沉默寡言,隨身配劍-九字兼定是他唯一的朋友,其最大的恐懼就是被他所殺的怨魂。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652161761823750.jpg]]|海座頭 傳說中會出現在大海中的怪物,他會問人們最害怕什麼東西,並讓人看見幻影,是一種可洞悉人類內心的妖怪。|
|[img[http://pic.eslite.com/Upload/Attachment/200812/633652161862292500.jpg]]|阿庸 源慧大師的妹妹,50年前為了某個原因,自願搭上空舟,成為鎮海的人柱;但後來卻被人認為是讓龍三角海域成為妖怪之海的罪魁禍首?|
!登場人物
|[img[http://pic.eslite.com/Upload/Attachment/200902/633691684897522500.jpg]]|
|琉璃姬公主(CV:山崎和佳奈)聞香派系中笛小路流派之掌門人,是聞香界價值連城的「欄奢待(東大寺)」的持有人。想透過鬥香選出其夫婿,勝出者將能與之結為連理,並獲得珍貴的東大寺。|
|室町具慶(CV:竹本英史)關東的武士,對聞香一無所知,因此常常被人嘲笑。據說,他是因為在關東的武士地位被動搖,才前來參加鬥香。|
|大澤廬房(CV:青野武)聞香比賽的參加者,為朝廷命官,對香道見識廣博。|
|半井淡澄(CV:廣瀨正志)本來是經營海運的商人,但在聞香界中也算小有名氣,不久前剛喪妻。|
|實尊寺惟勢(CV:內田直哉)本來也是聞香比賽的參加者之一,但一開始時就沒出現,後來被發現已死在另一個房間裡。|
|少女(CV:鐮田梢)室町具慶看到的神祕小女孩,被懷疑是殺死實尊寺的兇手。|
狠心殺害丈夫全家的女人-蝴蝶 被控告賣假藥而入獄的賣藥郎關在同一牢房的兩人,出現在他們面前的是…
背負殺人罪名而身陷囹圄的蝴蝶,與被控告販賣假藥而入獄的賣藥郎,被關在同一間囚室裡。蝴蝶因殺害丈夫佐佐木一家,將斬首示眾,神情恍惚的她,雖承認犯案,但似乎又不太確定是否為她所為。此時,一個帶著面具的男人出現,他強行帶走了蝴蝶,並奪走賣藥郎的臉孔!逃走後無依無靠的蝴蝶,在無臉男的要求下答應嫁給他。然而,不停浮現在腦海中的母親及佐佐木一家,似乎正阻礙她得到幸福。此時,再度現身的賣藥郎,亦發現真正的物怪似乎與原本想像的不同…
人的臉只是外在表象 面具下的真面目才是最真實的自我
這是一個如莊周蝴蝶夢般唯美的故事,除了主要人物-賣藥郎外,導演安排了日本傳說中會奪人臉孔的「無臉鬼」做為另一主角。本段故事特別以戲劇的方式,回顧蝴蝶一生,藉由第一幕、第二幕、第三幕的演出一步步挖掘出真相,也將如在夢中的蝴蝶拉回現實。
本卷是以「愛」為主題,無臉男愛上氣質出眾的蝴蝶,即使知道人類與物怪無法結合,卻不忍看她受苦而一次又一次出現在她身邊,最後甚至借她力量殺害其丈夫一家;而深愛自己母親的蝴蝶,從小為了討母親歡心,屢次犧牲自我,當個聽話的女兒。兩種不同層次、不同面向的愛,卻聯手造就了蝴蝶可悲的一生。犯下大宗殺人案的她,內心世界所欠缺或是被忽略的部份,正是這次故事的主軸,劇中總是一臉茫然的蝴蝶,自始至終都活在夢境中,直到賣藥郎讓她看見年幼時的自己,還有因「情感」與「關係」而被忽略甚至忘記的心情,才如夢初醒,而將這些「扭曲」再次導正,即是賣藥郎這次的任務。
承襲《物怪MONONOKE》一貫擅用場景暗喻的獨特手法,《無臉男》一卷以屏風作為敘述及暗喻的媒介,屏風上飲酒作樂的武士一家,搭配諷刺性的輕蔑言語,對照蝴蝶的愁容,形成一種強烈的反差,成功塑造出蝴蝶難以融入的權貴世界。為了表現蝴蝶嚮往的自由,無臉男帶著蝴蝶逃到有如桃花源的綺麗樹林中,場景遂轉換為猶如夢境般柔美的世界,粉色系營造出的畫面、不時飄著花瓣雨的場景、搭配輕脆的雲雀叫聲,製造出一種飄然的空靈,也宛如反映蝴蝶的期望。
人物設計上,本卷以不同面具來表達人物的喜怒哀樂,切合主題中所提到的「人的臉只是外在的表徵」,也因此無臉男雖然沒有真實的臉孔,卻能利用不同神情的面具來表達自身情緒。反之,蝴蝶雖然沒帶上面具,但所呈現的臉孔卻不是其「真面目」。此外,除了賣藥郎及蝴蝶外,所有存在於蝴蝶一生中的過客,全都未現出臉孔,有的帶上面具而有的則是以和紙貼住,製造出一種詭異的感覺,卻又十分切合「無臉」這個主題。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1187714793.jpg]]
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1188149752.jpg]]
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1188146807.jpg]]
http://www.eslite.com/product.aspx?pgid=1004143441823688
存在於世上之物
與不可存在之物
互相呼喚 融為一體
化身為物怪
斬、刺、剜、砍、刻
刀刃鳴動 與之呼應
藉由物怪之名、樣貌 得其「形」
事之因果 得其「真」
心之樣貌 得其「理」
利刃既出 因果淵源都將斬除
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1190619357.jpg]]
賣藥郎與七位乘客被聚集在同一車廂的理由是…
今天是地下鐵開通大典,舉市歡騰、國旗漫天飄揚。市長與賓客們搭乘的第一號列車成功出發了!但是,出發後不久,除了市長及六名乘客外,車廂內所有乘客竟全部離奇消失,原本分散在不同車廂的人被聚集在第一車廂,列車開始不受控制的狂飆,乘客們驚慌失措。接著,賣藥郎沉穩的現身,說出是物怪所為,開始追尋七名乘客彼此的關係;每提及真相,乘客就會被化貓襲擊而一一從車內消失。面對撲朔迷離的真與理,向來冷靜的賣藥郎竟出現焦慮的神情…
《物怪MONONOKE》起源之作《化貓》再現!
走過武士精神盛行的江戶 跨入盡情展現浪漫風情的大正時期!
《化貓》為《物怪MONONOKE》全系列的最後一卷故事,也是整部作品的起源之作。在《怪~ayakashi~化貓》的單元大受歡迎後,製作團隊背負起觀眾的期望,再次推出跨越好幾個時代的《化貓》,並讓所有的劇中人物轉世,化身為新角色,而賣藥郎也將在新故事中繼續展現魅力。
《怪~ayakashi》中《化貓》的故事背景設定於江戶時期,而在《物怪MONONOKE》中同名為《化貓》的故事,卻轉換時代背景,來到了充滿浪漫風情的大正時期。在這個與江戶時期截然不同的新時代裡,西風漸漸盛行,文化處在一個新舊交接的時期,社會風氣慢慢開放,也形成一種衝突性的美感。最明顯的一點在於人民的穿著與前面幾卷非常不同,有的穿和服,女性也開始出現中性或較時髦的打扮,而具有身份地位的人會以西化的裝扮出現,形成一種強烈的反差,而賣藥郎的奇特服裝,剛好揉合了兩個世代的特點,因此相當顯眼卻不突兀。
隨著社會氣氛逐漸西化,女性亦獲得思想上的解放,也因此本片的女性角色能夠自由工作,不若江戶時期的女性,總是淪為男人的玩物,完全無法掌握自身的命運。新女性的出現,與根深蒂固於傳統男性心中的思維,這兩種時代產物造成許多新職業、景象及衝突出現,也使許多法律、階層間出現灰色地帶,這也是造成本卷悲劇的主因。這些因時代背景變遷而產生的風格,看似與整系列作品的調性不同,但實質上卻可以找到許多《怪~ayakashi~化貓》的影子,賣藥郎斬除貓妖的任務依舊不變,並一再揭發人性最深層的冷酷與黑暗,同樣發人醒思的劇情加上全新風格的場景,反而蹦出別具風味的火花。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1191155627.jpg]]
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1191155624.jpg]]
http://www.eslite.com/product.aspx?pgid=1004143441823687
物怪的「形」是基於人的淵源跟因果形成的,
身懷六甲的女子。
讓女子借宿一宿的老闆娘。
追殺女子的男人。
三者聚集於一家旅館,
這裡日夜酒宴不斷,
鶯聲燕語、觥籌交錯,
還有…兒童天真無邪的笑聲。
雖聞其聲卻不見其形,
某個東西正窺視著這名女子,
其「形」正是物怪「座敷童子」!
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1184607313.jpg]]
某個雨夜,身懷六甲的志乃造訪驛站鎮的百年旅館。她神色緊張,苦苦哀求老闆娘-久代務必讓她借宿一晚,否則她和肚子裡的孩子將會沒命,久代拗不過拼命央求的志乃,於是讓她住進沒有任何外人知道的房間。夜半時分,一名殺手追隨著志乃的腳步來到旅店,當他正要下手殺害志乃時,反而被無形的力量殺害。此時,賣藥郎也出現在房裡,可探測物怪的天秤及退魔劍也紛紛現身,到底這個神秘房間裡躲藏著什麼樣的物怪?而它的「真」與「理」又是什麼?
艷麗古典浮世繪畫風 融合現代技法的新日本怪談
繼《怪~ayakashi~化貓》之後,《物怪MONONOKE》首篇即以「墮胎」這個極具爭議又略帶禁忌性質的話題,再續前作懸疑緊張、華麗神秘的調性。身懷六甲的女子在雨夜前來,急急敲門哀求,這一幕,不管是戲裡的群眾或戲外的觀眾,都被吸引了,唯有旅館老闆娘冷漠以對,並適時將大家拉回現實。大雨落下的聲音與急促尖銳的哀求聲,俐落自然地將懸疑緊張的氛圍導入劇中,大家即可查覺將有不尋常的事情發生,旅店老闆娘也如預期地不伸出援手,正將現代人不想招惹麻煩的心態表露無遺。
物怪的形成,都有著令人憐憫的「理」。在座敷童子背後的事實,是貪圖歡愉的男女激情後留下的證據,但他們一來到這世上,卻立即陷入不得不被殺害的命運。在人類緃慾下而成為物怪的童子們實是不得己,本卷可謂是既可憐又溫馨的故事。延續《怪~ayakashi~》的作畫風格,《物怪MONONOKE》以現代高超的動畫技巧表現江戶時代浮士繪版畫的生動,利用不常見的和式剪紙方式營造畫面,產生水波紋的感覺,使場景在平衡之下更添加傳說故事常有的虛幻感。主角身後極具生命力的背景,同樣吸引著關注劇情發展的觀眾目光,導演將不想直接說出的劇情添加在色彩豐富的精彩場景之中,讓觀眾可自行想像,這種使用暗喻手法點出故事重點的方法,不僅能清楚交代劇中一些曖昧難言的劇情,更增添觀眾觀看時的樂趣,創新的作為使人讚嘆手法之高明。
《物怪MONONOKE》系列比前作《怪~ayakashi~》更加唯美且具藝術性,例如:從天而降如花一般的雨滴、色彩繽紛轉動的油紙傘以及旅館裡的一景一物等,完美襯托著劇情的發展。此外,以顏色鮮艷的和式紙門做為切換場景的節點,適時於每個段落間一開一合,搭配簡短有力的聲效節奏,用簡單的手法交待場景轉換,觀眾也可一目了然。除了場景之外,人物的穿著及誇張的臉部表情也是本作特色之一,為時而緊湊時而懸疑的劇情,添加了一些喜感,而在這系列動畫中的賣藥郎,情緒及表情也較在《怪~ayakashi 化貓》中,來得豐富且俏皮。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1184993491.jpg]]
http://www.eslite.com/product.aspx?pgid=1004143441821897
【怪~ayakashi~化貓】
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1184771218.jpg]]
某個武士家的女兒將在今日出嫁,但就在上花轎的前一刻,新娘卻離奇慘遭殺害。一陣混亂中,一個賣藥郎緩緩地說:「這是貓妖幹的」。眾人對這位外人的話感到懷疑,但隨即感覺有種無形的東西,正懷著敵意急速靠近。
賣藥郎表示妖怪之所以會出現,必定是這武士家曾經發生過一些不合理的事件,唯有說出真相,他才能替他們剷除妖孽。隨著接二連三的離奇死亡發生,小房子裡的緊張氣氛瀕臨崩解,充滿怨氣的貓妖最後也在眾人面前現身。此時,武士家的當家-坂井伊行突然開啟密道,眾人逃進地底密室中,卻意外發現一件新娘的白色禮服,也因此揭開了隱藏在貓妖襲擊人類背後,殘忍、無情的可怕內幕…
人乃好變之物
時乃變動之物
海乃莫測之物
目的地相同的眾人搭船同行
一望無際的海洋
浪的顏色 高度
都與往常不同
妖怪 物怪 海坊主
只要人的心中有黑暗
將有絡繹不絕之物造訪
但最可怕的
乃是內心的誘惑之音!
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1186810278.jpg]]
賣藥郎現身前往江戶的大型商船-「空栗鼠丸號」追尋傳說中妖怪之海-龍三角的秘密過去…大型商船「空栗鼠丸號」載著客人往江戶前進,船主三國屋多門是名商人,船上載著咒術師-柳幻殃齊、流浪劍客-佐佐木兵衛、五台寺高僧-源慧大師及其弟子菖源,還有曾目睹化貓事件的女傭-加世,正當大家在參觀富麗堂皇的船體時,意外發現賣藥郎也在船上。原以為將順利抵達江戶,沒想到眾人一覺醒來卻發現船已偏離航線,並到了傳說中的妖怪之海-龍三角。此時,許多妖怪一一現身,朝大家襲來,還出現了會洞視人心的「海座頭」;爾後,從天而降一艘「空舟」,讓源慧大師恐懼不已,並娓娓道出「空舟」與這片海域的過去。難道這艘「空舟」就是讓龍三角成為妖怪之海的「形」嗎?那物怪的「真」與「理」又是什麼呢?
浮世繪般的海洋與風 2D場景表現動態畫面。展現屬於《物怪MONONOKE》的浮華之海。《物怪MONONOKE》第二卷,發生在前往江戶的大型商船「空栗鼠丸號」上。故事一開始,先以說書人的口吻講述日本傳統的海怪傳說,舖陳接下來的詭異氣氛,讓觀眾進入情境。劇中眾人皆因要前往北方的江戶而聚於同一艘船上,但卻無故偏離航道,讓眾人紛紛討論起眼前看到的怪異現象。隨即,上空傳來妖怪「虛空太鼓」的擊鼓聲,彷彿向眾人宣告,已進入人稱「龍三角」的妖怪之海,詭譎之事也接踵而來。
人的弱點就在於害怕被別人看穿心中不願洩露的秘密。物怪的攻擊,卻讓人不得不去面對內心深層的恐懼;即使不願說出,意志也會被物怪看透而無所遁形,也就是說如果不應存在的念頭存在心裡,是怎樣都無法隱瞞的。整個故事主軸為你情我願的「男女之情」,揉合無法跨越的道德尺度,交織出狠心犧牲摯愛親人的自私念頭,但如此私心,最終將化做一條名為「恐懼」的長鞭,日夜不停鞭笞著人心,甚至形成無法控制的物怪,挖掘出最黑暗卻不得不面對的醜陋面貌。
除了張力十足的劇情之外,最值得一提的是,在《怪~ayakashi~化貓》裡登場的少女-加世,也在本篇登上「空栗鼠丸」成為乘客,是本系列作中,除了賣藥郎外,唯一一個重複出現的配角。前往江戶尋找新工作的加世,不改其率直開朗的本性,以特殊的方式出現在「海坊主」的故事中,為詭異的氣氛帶來許多有趣的話題與橋段。一改首篇《座敷童子》的調性,《海坊主》以大海為舞台,並融合維也納分離派代表-古斯塔夫‧克林姆的三幅作品,以特殊美術上色的手法,描繪出「空栗鼠丸」中,隱喻兄妹、同性之間禁忌之愛的背景,可說是搭配的恰如其分;本篇還使用各種不同層次的藍,描繪如浮世繪般的海洋與風;物怪設定則是與水相關的魚類,以各種不同的形象出現,或存在於妖怪之海;而以平面的2D場景展現各種動態畫面,展現屬於海洋應有的特色,更是完全符合《物怪MONONOKE》的鮮艷世界。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1186297418.jpg]]
http://www.eslite.com/product.aspx?pgid=1004143441821898
於虛無飄渺的哀歌中隕落
言語亦無法形容之地
殘留下的僅是莫名的悲傷
以及不存在的記憶
四個人 五具屍體 還有消失的小女孩
這個房子到底隱藏了什麼樣的秘密?
[img[http://tw.f14.yahoofs.com/myper/34Q7DV2WXhl.02tKs6uCyVL3r4g-/blog/ap_20080203021304231.jpg?TTAqZMKBGSh5rRWK]]
鵺(音:一ㄝˋ)
積雪舖滿大地的冬日,聞香界中據聞早已失傳的笛小路流正在舉行聞香大會,由掌門人-琉璃姬公主親自出題,勝出者不僅能成為公主的夫婿,還能得到聞香界最稀有昂貴的極品-「東大寺」。比賽時間已到,其中一位參賽者-實尊寺卻遲遲未出現,此時路經該地的賣藥郎,因此巧妙地頂替了空缺。
志在「東大寺」、各懷鬼胎的三人,比賽期間紛紛趁機打探「東大寺」的下落,卻意外發現實尊寺在比賽前已遭到殺害;緊接著,琉璃姬的屍體也出現在大家眼前。三人雖受到驚嚇,但為了獲得「東大寺」三人仍決定繼續比賽,而為了維持比賽的公正性,這場最後的勝負將由賣藥郎來出題!?
黑白水墨構成的世界 色彩運用的極致表現
「香道」、「茶道」及「花道」被稱為日本三大文化,本篇故事以「聞香」為主題,透過這種貴族活動,影射上流社會勾心鬥角、階級分明及貪婪自私的心態。「聞香」是種極盡風雅的娛樂,利用嗅覺鑑賞香木之芳香,分辨其微妙不同,因此必須聚精會神感受其中奧妙,是一種非常需要功力與學習的活動,現為一門專精獨特的文化,是謂「香道」。
故事中的聞香規則,實質就是現今香道講究的規則;影片中,出現的多種香木種類,例如:真那賀、真南蠻、伽羅、新伽羅等,甚至是比賽流程、使用的器皿及聞香動作等都完全取材自現實,並結合日本經典文學作品-《源氏物語》各帖名稱,由此可見,其風雅與貴氣。故事中,人人都想得到的「蘭奢待」,相傳是皇室珍品,為天下第一名香,因此被保存在東大寺裡,而《鵺》即是以這稀世真品做為故事的出發點,發展出極具《物怪MONONOKE》風格卻又傳揚日本香道的有趣故事。
下雪的冬季裡,畫面上的景物幾乎被白雪覆蓋。以一種天然的冷製造出不尋常的氛圍。院子若大的迴廊,建構出大戶人家宅邸的深幽與寬廣,但除了參賽者與賣藥郎之外皆無人出沒的院落,又似乎太死氣沉沉,雖然下雪已令人感覺寒冷,但空曠的環境加上為數極少的人物,更為此篇增添一股沒由來地寒意。
古人有云:「眾口鑠金」,《鵺》一篇即以這個中心思想出發,故事中參與聞香比賽的四人皆為聞名天下的蘭奢待而來,貪婪狂妄且不自量力,因而至死都被物怪玩弄於股掌之間,而將眾人自物怪之手解放,即為此次賣藥郎的目的。
畫面幾乎僅運用黑灰白三種色調來構成大部份的場景,不僅暗示觀眾那是一個無人之地,亦營造出停留在虛幻世界之感。色彩僅以點綴性的方式出現,因此更能成為觀眾視線的焦點;不過,到了表達聞香者對所聞香氣的感動時,卻又以全彩畫面呈現,企圖完整傳達聞香後所產生的意境。可謂是色彩運用的極致表現。
[img[http://p6.p.pixnet.net/albums/userpics/6/4/19364/1188834778.jpg]]
鵺
存在於日本傳說中的鳥,據說會依觀看者的心態不同,而變化成各種不同的形體
http://www.eslite.com/product.aspx?pgid=1004143441823689
!四谷怪談
[img[http://www.hkmule.com/w/images/thumb/0/01/Ayakashi.jpg/200px-Ayakashi.jpg]]
!!劇情簡介
沿襲《東海道四谷怪談》的內容、故事的一開始和「結尾」的最後與原作者-鶴屋南北一起交織了整個四谷怪談的歷史。
!!登場人物
民谷 伊右衛門(民谷 伊右衛門(たみや いえもん) 聲優:平田廣明)
原來是個武士。因為赤穗家遭到抄家而成為浪人。和阿岩互相喜歡彼此,但受到阿岩的父親-左門的懷疑而被迫分手。後來左門因為看到他在十字路口殺害別人的惡行而被他所殺,他也因此順利和阿岩復合,但在阿岩生下孩子後而冷落了她。
民谷 岩(民谷 岩(たみや いわ) 聲優:小山茉美)
在產下伊右衛門的孩子後,也還是不發牢騷地過著貧困的生活。但由於伊右衛門和阿梅開始交往而成為他們之間的障礙,於是遭到下毒。因而在留下恨意後而憤死並且成為怨靈,對伊右衛門和他周圍的人一個一個進行報復……。
鶴屋 南北(鶴屋 南北(つるや なんぼく) 聲優:阪脩)
江戶時代的文學家、四谷怪談的原作者。講述這次故事的人物。
四谷 袖(四谷 袖(よつや そで) 聲優:永島由子)
阿岩的小姨子。為了幫被認為死亡的與茂七報仇,而與直助成為暫時的夫妻。但實際上與茂七卻依然活著……。
伊藤 梅(伊藤 梅(いとう うめ) 聲優:廣橋涼)
武士的女兒。在見到伊右衛門後,明知他有妻子卻還依然想要與他交往。是一位任性刻薄的美少女。
直助 權兵衛(直助 権兵衛(なおすけ ごんべえ) 聲優:園部啟一)
以前在四谷家幫傭的男人。為了能夠對阿袖橫刀奪愛,藉著要幫與茂七報仇為藉口而與她成為夫妻。
佐藤 與茂七(佐藤 与茂七(さとう よもしち) 聲優:高木涉)
和阿袖訂婚的浪人。因為曾經打傷權兵衛而得罪了他,結果他和左門一起遭到謀害,而被認為已經死亡。
宅悅(宅悦(たくえつ) 聲優:稻葉實)
表面為按摩師。但實際上是地獄宿(女郎屋)的店主。在成為伊右衛門的小弟後而知道他的陰謀,由於害怕而向阿岩毫不保留的說出真相。
小佛 小平(小仏 小平(こぼと こへい) 聲優:松野太紀)
經由宅悅的介紹,在伊右衛門家服務。為了治好原來主人的病,而偷了叫作ソウキセイ的藥,結果被發現而慘遭殺害。
秋山 長兵衛(秋山 長兵衛(あきやま ちょうべえ) 聲優:諸角憲一)
和伊右衛門在浪人時是好同伴。幫助他棄置阿岩的屍體。
阿熊(お熊(おくま) 聲優:鈴木れい子)
伊右衛門的母親。由於赤穗家遭到抄家,而成為到敵人吉良家服務的佛孫兵衛的後妻,並且虐待小平的孩子。
!!製作人員
原作:鶴屋南北
劇本:小中千昭
製作擔任:杉本隆一、野田由紀夫
角色原案:天野喜孝
角色設定、總作畫監督:伊藤秀樹
美術監督:加藤浩
色彩設計:塚田劭
系列構成:今澤哲男
!!他人心得
四谷怪談﹣經典鬼故水彩化
三個故事排第一的是鶴屋南北作、最近被小說家京極夏彥寫成小說而再被新一代所熟知的《四谷怪談》,由於是打頭陣,所以制作班底也相當有名:劇本的小中千昭是出名的恐怖電影劇本家,而監督今澤哲男則曾擔任《一休》、《六神合體》、《宇宙皇子》等作品的監督,至於人物設計則是近年只替《Final fantasy》畫畫意念插畫的天野喜孝!這個班底是現在休想在一般的動畫上看得到的超豪華制作班。故事採用很有名的四谷怪談,也就是說一個女子被負心漢背叛,連臉都爛了,最後還被殺掉,而女的就變成惡鬼去報仇的故事。正如動畫一開始所指出,這個阿岩(女主角,她那個一邊臉爛掉的做型可說是經典的日本妖怪做型)的故事其實有很多個版本,而也坦白說這個故事和民間流傳的版本不一樣。《四谷怪談》的特別地方是全劇採用水彩畫的形式繪畫背景,再合陰暗的色調、浮世繪(江戶年代的一種民間畫)以及天野喜孝設計的角色,以做出一種鬼氣逼人的效果。由於故事本身就是一場又一場的悲劇,所以這種充滿陰沉的處理風格就讓作品變得更加震撼,特別是當權兵衛知道真相時,以及最後伊右衛被逼到絕路之時,這種畫風就讓故事的感染力更大。而最後故意將一些和四谷談有關的怪異事件,以真實的片段配合播放出來,使本來只不過是一個怪談更變得很像有這麼一回事的,制作群實在有一手。
配音方面,小山苿美配的亞岩實在太傳神了,雖然在其他部份也有優秀的聲優,但說到最搶戲的還是小山的亞岩的那句:『我好恨哦,伊右衛門~』
轉自http://format-acg.org/anime/forum/ayakashi.html
!天守物語
[img[http://i3.yesasia.com/assets/30/401/p1010840130.jpg]]
!!劇情簡介
雖然使用原作天守物語的名稱,但故事與設定卻有許多的變更點,大體上成為另一個原創故事。原作以「白鷺城」為舞台,這也是姬路城的別名。
!!登場人物
天守物語
姬川圖書之助(姫川図書之助 聲優:綠川光)
為武田播磨守的鷹匠。為了找回失蹤的老鷹小次郎而在森林迷路,因此來到了白鷺城附近的池子。在這池子旁宿命地遇到了白鷺城裡的富姬,結果漸漸地愛上了她。
富姬(富姫 聲優:桑島法子)
身為忘卻之神的美麗公主。住在白鷺城的天守閣上。以前,她的母親愛上了人類,結果卻被拋棄而死於非命。她也與母親走上同樣的命運。在與圖書之助戀愛時,同時體會到了喜悅與悲傷的感情。
長姥(老婆婆)(舌長姥(老婆) 聲優:真山亞子)
住在白鷺城中的忘卻之神的一人,並且養育富姬長大。也擔任富姬母親的監察人。在知道富姬與圖書之助戀愛以後,而非常害怕忘卻之神一族的神力因此而消失。
奇奇丸(奇々丸 聲優:小野坂昌也)
以藏在白鷺城的財寶為目標,因此與圖書之助聯手進入城中找尋財寶。為了收集情報,而變裝前往人類住的地方訪查。
怪怪丸(怪々丸 聲優:山口勝平)
奇奇丸的搭檔。有著一副像是青蛙的姿態,是個以擁有能夠揮舞巨鎚的怪力而自豪的妖怪。要襲擊遇見富姬的圖書之助時,被富姬給打倒而逃之麼夭。
阿靜(お静 聲優:千葉紗子)
人類女性。個性認真,和圖書之助是一對戀人。在和圖書之助結婚後,由於意識到他的心已經不在她的身上,而賭上了自己身為女性的自尊展開行動,要把圖書之助給喚回來。
!!製作人員
原作:泉鏡花
劇本:坂元裕二
製作擔任:野田由紀夫
角色設定、概念設定、總作畫監督:名倉靖博
美術監督:行信三
色彩設計:森田博
動畫導演:門田英彥
系列構成:永山耕三
!!他人心得
永恆的戀愛故事
雖然不論在故事還是作畫上都不如之前的《四谷怪談》及之後的《怪貓》來得鮮明,但不等於制作水準差及沒有特色。監督的永山耕三和坂元裕二曾經合作拍一系列柴門文的經典電視劇如《東京愛的故事》,《同班同學》,而永山更是《Long Vocation》、《同一屋簷下》的監督呢!至於名倉靖博則擔住過動畫電影《大都會》的人設作作畫監督,也是頂級動畫人了。
以泉鏡花的鬼故事作為籃本的《天守物語》其實只是很老套的故事,都是一個年輕人和妖怪的愛情故事,這種故事中國也有不少,只是這次發生在日本,主角是一個武士而已。比起之前和之後以畫人性的黑暗面的故事,《天守物語》則是歌誦愛情的偉大,足以超越人和妖的間隔。而作畫風格上這次則採用回六十年代那種動畫風格,即是像黑白片年代東映拍的動畫,又或者中國動畫常見的那種風格,淡淡的色彩,幼細的線條,蒼白的角色,以產生一種六七十年代的動畫風格,而且相比起之前和之後的作畫,這套反而故意地用比較草率的作畫來畫,以更配合復古風,對於已經沒有什麼機會看到這種古式的動畫風格的新一代來說,大概不了解其中的趣味吧?
配音方面這輯是最多大牌的,像男主角的綠川光,女主角的桑島法子,還有千葉紗子、山口勝平、小野坂昌也等等都是老手。所以表現不必擔心。
轉自http://format-acg.org/anime/forum/ayakashi.html
[img[http://image.17173.com/bbs/upload/2006/03/10/1141933392.jpg]]
座敷童子(日語:座敷童)是日本妖怪的一種,也是房子的守護神。
傳說座敷童子主要是寄住在破舊、有小孩子的房子中。座敷童子的化身是一個紅臉的孩子,但成年人均看不到,只有小孩有機會看到。
從前,不少日本家庭都會在門前放置糕餅,座敷童子吃了之後會住下來一陣子,為這個家帶來幸運;相反的,若是這個家的人待他不好的話,座敷童子便會跑掉,並會使該個家庭帶來不幸。
| 朱倩瑜(崩壞了!!) |h
| [img[http://farm4.static.flickr.com/3601/3405460653_8c16816323.jpg?v=0]] |
| 出生:1990年1月16日 |
| 職業:正直讀書人 |
| 興趣:呼呼呼 |
| 詩號:呼呼呼呼呼 呼呼呼呼 呼呼呼呼 呼呼 |
| 朱門天下的創始人又稱朱先天。目前退隱在世新大學當個正直讀書人。兒子是朱痕,媳婦是慕少艾,孫子是阿九。後宮人數持續增加中♥ |
| 武學:朝朝暮暮慕少艾、朱門酒肉臭路有凍死骨 |
朱倩瑜 民國七十九年生於台北縣的。家中有五名成員,父親朱榮豐從事工程師的工作,母親張慶梅目前是家管,育有三名女兒,朱倩瑜在家中排行老大。目前就讀於世新大學數位多媒體設計學系由系設計組一年級。
!學業
國小:畢業於台北縣立安和國民小學
國中:畢業於台北縣立清水國民中學
高中:畢業於國立板橋高級中學
大學:現今就讀世新大學數位多媒體設計學系遊戲設計組
!兒童時期
天真活潑,好奇心強
[img[http://farm4.static.flickr.com/3632/3444300455_3aa23940fe_m.jpg]]
!求學時期
!!!國小時期
小學就讀瑜台北縣安和國民小學。小學時期的成績還算不錯,除了課業之外也特別注重五育的發展。活潑好動,時常替班上參加動競賽,在美術方面也有不錯的成績。
!!!國中時期
*成績
還算不錯。
*人際關係以及擔任幹部
曾擔任一學期的副班長和圖書股長,了解同學們的需要和心聲,也奠定了良好的人際關係。
*比賽
國中一年級,參與過大大小小的設計比賽,有不錯的成績。
得獎
**性別教育平等漫畫創作比賽第三名
**英文句子繪畫佳作
**海報設計類銅獎等
!!!高中時期
就讀板橋高中。高一時,參與班級合唱比賽,得到了第二名。高二,選擇了社會組。社團是美術社。
*成績
維持一個水準。
*人際
高二、三年,結交了不少的知心好友。
!!!大學時期
就讀世新大學數位多媒體設計學系遊戲組。
!興趣
**畫圖
每當開心或著遇上不順心的事情時,會用畫圖代替文字來表達心情,而這也成了朱倩瑜和班上互動的一個橋樑,常常替班上參加競賽或者作教室佈置 。
!作品
**繪畫類
[img[http://farm4.static.flickr.com/3562/3446612375_614d5c3c41.jpg?v=0]] [img[http://farm4.static.flickr.com/3361/3447425094_96b444773c.jpg?v=0]]
**漫畫類
[img[http://farm4.static.flickr.com/3315/3444300203_f66d78a912_m.jpg]] [img[http://farm4.static.flickr.com/3658/3444300665_f750cdf155_m.jpg]] [img[http://farm4.static.flickr.com/3661/3444300781_b80885533d_m.jpg]] [img[http://farm4.static.flickr.com/3207/3101540387_db39296b85_m.jpg]]
**遊戲
神棄(美術部分)
[img[http://farm4.static.flickr.com/3552/3444300975_de5bf39d0b_m.jpg]] [img[http://farm4.static.flickr.com/3563/3445119170_86d3733610_m.jpg]]
[img[http://farm4.static.flickr.com/3317/3446664597_5e33f6e7e0.jpg?v=0]]
**其他
影像處理作業
[img[http://farm4.static.flickr.com/3384/3444300861_3491955529_m.jpg]]
!我的愛(喂!)
| 藥師慕少艾♥ |h
| [img[http://farm4.static.flickr.com/3646/3447412037_b50aeb6f75_m.jpg]] |
|幽默風趣、風雅雋逸的藥師神醫,擁有相當高超的醫術與修為,早前曾與素還真較勁失利,而潛沉於琉璃仙境之下;後贏得麒麟穴而步入紅塵,擔起對抗異度魔界之重責,即使遇上艱難逆境也會以輕鬆態度面對、自我調侃,是正道不可多得的好幫手。|
| 懶的打字所以上面內容皆是出自霹靂網 http://home.pili.com.tw/(沒誠意) |
!詞條內容
!!大事記
*1527年——西班牙和神聖羅馬帝國軍隊攻入羅馬,有人以為這是文藝復興的結束日。在洗劫羅馬的過程中,負責保護教宗的瑞士近衛隊為履行職責掩護教宗而慘烈戰鬥,損失達四分之三。
*1536年——英國國王亨利八世下令翻譯《聖經》,使每個教堂都能擁有英文版《聖經》。
**亨利八世
| 亨利八世 |>|h
|>| 英格蘭國王,愛爾蘭國王,威爾斯親王 |
|>| 英格蘭人 |
|[img[http://tbn1.google.com/images?q=tbn:wgWZ8qNQgI55KM:http://p6.p.pixnet.net/albums/userpics/6/1/38961/1209285747.jpg]]|亨利八世英文為 Henry VIII,1491年6月28日-1547年1月28日。亨利八世推行宗教改革,將新教引入英國。他通過一些重要法案,使英國教會脫離羅馬教廷,自己成為英國最高宗教領袖,解散修道院,英國皇室的權力因此達到頂峰,且把威爾斯併入英格蘭。|
*1682年——法國國王路易十四宣布將宮廷從巴黎羅浮宮遷往凡爾賽宮。
*1757年——七年戰爭:布拉格戰役,普魯士大敗奧地利。
*1840年——世界上第一批郵票——「黑便士」在英國誕生。
**黑便士
[img[http://upload.wikimedia.org/wikipedia/commons/b/bd/Penny-black.jpg]]
*1857年——不列顛東印度公司解散孟加拉土著步兵第34團,直接引發印度民族起義。
*1860年——朱塞佩. 加里波第 的紅衫軍從熱那亞起航遠征兩西西里王國。
**加里波底
| 朱塞佩·加里波底 |>|h
| 義大利人 |>|
| [img[http://tbn0.google.com/images?q=tbn:RlM0M_MC-IJ44M:http://upload.wikimedia.org/wikipedia/commons/thumb/0/08/Garibaldi.jpg/180px-Garibaldi.jpg]] |1807年7月4日-1882年6月2日)是個義大利愛國志士及軍人。他獻身於義大利統一運動,親自領導了許多軍事戰役,是義大利建國三傑之一(另兩位是薩丁尼亞王國的首相加富爾和創立青年義大利黨的馬志尼。|
*1861年——南北戰爭 :阿肯色州脫離聯邦。
*1863年——南北戰爭:錢斯勒斯維爾戰役,石牆傑克遜領導的南方邦聯軍大捷。
**南北戰爭(美國內戰)
***日期
****1861年4月12日–1865年4月9日。
***地點
****大部份位於美國南方的州份。
***背景
****政治因素方面:聯邦政府權力與各州政府權力衝突的結果。
****.經濟利益方面:北部因為工商業迅速發展,為確保工業發展所必須的秩序和安定;南部因為棉田需要粗工。
****社會問題方面:嚴重的黑奴問題。
***結果
****北方聯邦軍勝利,開始重建美國南方,並廢除奴隸制,美國統一。
*1882年——美國國會通過排華法案。
**聯邦政府受西岸各省議員壓力,通過史無前例的种族歧視法例《排華法案》(Chinese Exclusion Act)。明文禁止華工及其眷屬入境,華人移民沒有資格歸化入籍成為公民。法案有效期為十年。舊金山市唐山碼頭旁設移民站審查入境華人。
*1889年——艾菲爾鐵塔于世界博覽會上正式對外開放。
**世界博覽會(World's Fair),又稱國際博覽會及萬國博覽會,簡稱世博會、世博、萬博,是一個具國際規模的集會。參展者向世界各國展示當代的文化、科技和產業上正面影響各種生活範疇的成果
**艾菲爾鐵塔
[img[http://thm-a01.yimg.com/image/c5cb82cdea2409d0]]
*1910年——英國國王喬治五世登基。
*1935年——羅斯福新政:公共事業振興署成立,旨在實施救濟,興辦公共工程,解決失業問題。
**指1933年富蘭克林·羅斯福就任美國總統後所實行的一系列經濟政策,其核心是三個R:救濟(Relief)、改革(Reform)和復興(Recovery)。以增加政府對經濟直接或間接干預的方式大大緩解了大蕭條所帶來的經濟危機與社會矛盾。
*1937年——德國興登堡號飛艇在美國紐澤西州降落時起火焚毀,造成36人死亡。
**其他空難
| 日期 | 簡述 | 死傷人數 |
|1994年06月06日|中國西北航空公司圖-154型2610号飛機,在陕西省墜毁|160死|
|1998年09月02日|瑞士航空公司的一架客機在加拿大附近墜入大西洋|229死|
|2002年05月25日|台灣中華航空公司在澎湖附近海域墜機|225死|
*1942年——第二次世界大戰:最後一批駐菲律賓的美軍向日本軍投降。
*1945年——第二次世界大戰:布拉格會戰,歐洲戰場東方戰線中最後一次大規模會戰。
*1949年——國共內戰:中國人民解放軍開始包圍上海。
*1954年——英國運動員羅傑·班尼斯特在牛津大學舉行的比賽中成為首個突破1英里跑4分鐘大關的人。
*1960年——英女王伊利沙伯二世的妹妹—瑪嘉烈公主大婚。
*1967年——香港新蒲崗塑膠花廠的工人因勞資糾紛而罷工,並與防暴警察發生衝突,引發六七暴動。
*1976年——義大利北部大地震,逾千人死亡。
**其他地震
|排名|名字|日期|位置|遇難人數|震央|其它|
|1|嘉靖|1556年1月23日|陜西中國|830000|~8||
|2|唐山|1976年7月28日|唐山中國|255,000 (官方)|7.5|遇難人數總計超過655,000|
|3|印度洋|2004年12月26日|北蘇門答臘西海岸印度尼西亞|~230,210| 9.1|死於地震和海嘯|
*1981年——華裔設計師林瓔的越戰紀念碑設計方案獲得採納。
**越戰紀念碑
[img[http://tbn3.google.com/images?q=tbn:1CmDmzYk0luyzM:http://img.blog.163.com/photo/gt195vqiyixUGWt723U8nA==/876794552454346694.jpg]]
*1987年——中國黑龍江省大興安嶺地區發生森林大火,導致193人死亡。
*1988年——挪威一客機航班失事,36人罹難。
*1994年——橫穿英吉利海峽,連接英國與法國的英法海底隧道正式通車。
*1997年——英倫銀行正式脫離政府行政干預,這是其300多年歷史的一次本質性改變。
*2001年——人類第一個太空遊客安全返回地球。
*2002年——法國總理讓-皮埃爾·拉法蘭上任。
*2004年——電視情景喜劇《六人行》(又譯《老友記》)播放最後一集。
!!出生
*1397年——朝鮮世宗
*1501年——馬塞勒斯二世,教宗
*1574年——諾森十世,教宗
*1758年——馬克西米連·羅伯斯庇爾,法國政治家
*1856年——西格蒙德·弗洛伊德,奧地利心理學家
*1861年——莫逖拉爾·尼赫魯,早期印度獨立運動領袖
*1868年——加斯東·勒魯,法國作家
*1868年——尼古拉二世,俄羅斯帝國沙皇
*1871年——維克多·格林尼亞,法國化學家
*1882年——威廉皇儲,德意志帝國末代皇儲
*1904年——哈里·馬丁松,瑞典作家、詩人
*1915年——奧森·威爾斯,美國劃時代的電影導演、編劇、演員
*1929年——保羅·勞特伯,美國化學家
*1931年——威利·梅斯,前美國職棒大聯盟的著名球手
*1934年——理查·謝爾比,美國政治家
*1942年——林海峰,台灣旅日圍棋選手
*1950年——中野良子,日本女演員
*1953年——托尼·布萊爾,英國首相
*1961年——佐治·古尼,美國演員,導演,編劇
*1974年——鄧健泓,香港演員及歌手
*1980年——里卡多·奧利維拉,巴西足球運動員
*1980年——張誌家,台灣旅日棒球選手。
*1985年——克里斯·保羅,美國NBA球星
*1987年——文根英,韓國女演員
|[img[http://tbn3.google.com/images?q=tbn:WOMrsXj36YDjJM:http://imgsrc.baidu.com/baike/pic/item/d57e9994d51c360dd31b7056.jpg]]|[img[http://tbn3.google.com/images?q=tbn:Xi-LfI4NxV-fAM:http://blog.roodo.com/giff/c87ddd78.jpg]]|[img[http://tbn2.google.com/images?q=tbn:fy8iSdpZciH0HM:http://www.veduchina.com/UserFiles/Image/2008/11/10/e2e2c0ba-28ec-4e5b-b91f-eefb3a33598d.jpg]]|
|尼古拉二世|張誌家|文根英|
!!逝世
*680年——穆阿維葉一世,倭馬亞王朝的創建者
*1757年——馬克西連·馮·布勞恩,奧地利陸軍元帥
*1757年——庫爾特·馮·施維林,普魯士元帥
*1840年——弗朗西斯科·德保拉·桑坦德爾,哥倫比亞獨立運動領袖
*1859年——亞歷山大·馮·洪堡,德國科學家
*1862年——亨利·戴維·梭羅,美國哲學家、作家
*1910年——愛德華七世,英國國王
*1949年——莫里斯·梅特林克,比利時詩人、劇作家、散文家
*1950年——史沫特萊,美國女記者、作家
*1951年——埃利·嘉當,法國數學家
*1952年——馬利亞·蒙特梭利,義大利教育家
*1963年——西奧多·馮·卡門,匈牙利裔美國空氣動力學家,工程力學和航空技術的權威
*1967年——周作人,中國文學家
*1992年——瑪蓮娜·迪特里茜,德裔美國演員兼歌手
*2008年——侯冠年,中華民國藝術家
|[img[http://tbn0.google.com/images?q=tbn:mcCIRKF-lQ0k9M:http://i3.sinaimg.cn/dy/c/2008-04-21/U2861P1T1D15398290F21DT20080421112150.jpg]]|
|周作人|
!!節假日和習俗
!!參考文獻
維基百科http://zh.wikipedia.org/w/index.php?title=5%E6%9C%886%E6%97%A5&variant=zh-tw
!大事記
*1832年——希臘脫離鄂圖曼帝國獨立。
*1895年——俄國物理學家波波夫在俄國物理和化學學會上展示了他發明的首台無線電接收機。
*1915年——英國盧西塔尼亞號郵輪在愛爾蘭外海被德國U-20潛艇擊沉,造成1198人身亡。
*1940年——二戰:英國首相張伯倫因綏靖政策破產而辭職。
**綏靖政策的目的以討好 退讓的手段來安撫希特勒的野心,1939年希特勒背信侵占捷克,綏靖政策失敗
*1942年——二戰:日美珊瑚海海戰。
*1945年——納粹德國宣布無條件投降。
**第二次世界大戰軸心國投降的日期
|軸心國|投降日期|
|義大利|1943年9月|
|德國|1945年5月7日|
|日本|1945年8月14日|
*1952年——Geoffrey W.A. Dummer 首先發表集成電路概念。
*1954年——越南獨立同盟會領導的軍隊攻下法國軍隊駐守的奠邊府,奠邊府戰役結束。
*1967年——香港六七暴動開始。
*1973年——華盛頓郵報揭露出水門事件。
**水門事件 Watergate scandal,或譯水門醜聞,在1972年的總統大選中,為了取得民主黨內部競選策略的情報,1972年6月17日,以美國共和黨尼克森競選班子的首席安全問題顧問詹姆斯·麥科德為首的5人闖入位於華盛頓水門大廈的民主黨全國委員會辦公室,在安裝竊聽器並偷拍有關文件時,當場被捕。
*1992年——美國奮進號太空梭在佛羅里達州甘迺迪太空中心首次發射升空。
*1998年——蘋果電腦宣佈將推出iMac電腦。
**iMac是一款蘋果電腦生產,針對消費者和教育市場的一體化Mac電腦系列。iMac的特點是它的設計。早在1998年,蘋果總裁史提夫·賈伯斯就將「What's not a computer!」((看起來)不是電腦的電腦)概念應用於設計iMac的過程。
*1999年——五八事件:北約轟炸中國駐南斯拉夫使館。
*1999年——幾內亞比索軍事將領馬內發動軍事政變,推翻總統維埃拉領導的政權。
*2002年——中國北方航空6136號班機在大連灣墜毀,112人罹難。
**其他空難
| 日期 | 簡述 | 死傷人數 |
|1994年06月06日|中國西北航空公司圖-154型2610号飛機,在陕西省墜毁|160死|
|1998年09月02日|瑞士航空公司的一架客機在加拿大附近墜入大西洋|229死|
|2002年05月25日|台灣中華航空公司在澎湖附近海域墜機|225死|
!!出生
*1530年——路易一世·德·波旁 (孔代親王),法國軍人和政治家,孔代家族的始祖。(1569年逝世)
*1711年——休謨,英國哲學家。
*1754年——儒貝爾,法國文人。(1824年逝世)
*1812年——羅伯特·變褐,英國詩人和編劇(1889年逝世)
*1833年——約翰內斯·勃拉姆斯,德國古典主義作曲家。(1897年逝世)
*1840年(新曆5月7日,當年合儒略曆4月25日)——彼得·伊里奇· 柴科夫斯基,俄羅斯作曲家。(1893年逝世)
**柴可夫斯基
|>| 彼得·伊里奇·柴可夫斯基 俄語:Пётр Ильич Чайковский |h
|>| 俄羅斯人 |
| [img[http://tbn0.google.com/images?q=tbn:2pSkWyo5n6fKUM:http://www.belcanto.ru/comp/tchaikovsky1.jpg]] |1840年5月7日-1893年11月6日,俄羅斯浪漫樂派作曲家。其風格直接和間接地影響了很多後來者。代表作:曼弗雷德交響曲、天鵝湖、睡美人、胡桃鉗、G小調第一交響曲、B小調第六交響曲、1812序曲、弦樂小夜曲、義大利隨想曲、哈姆雷特等等。 |
*1847年——阿奇博爾德·普里姆羅斯,英國自由黨政治家,曾任英國首相。(1929年去世)
*1861年——羅賓德拉納特·泰戈爾,印度詩人,在加爾各答出生。(1941年逝世)
**泰戈爾
| 羅賓德拉納特·泰戈爾 রবীন্দ্রনাথ ঠাকুর |>|h
|>| 印度 |
|[img[http://thm-a01.yimg.com/image/48bf637872144b5e]]|1861年5月7日-1941年8月7日)是一位印度詩人、哲學家和印度民族主義者,1913年他獲得諾貝爾文學獎。他的詩中含有深刻的宗教和哲學的見解。對泰戈爾來說,他的詩是他奉獻給神的禮物,而他本人是神的求婚者。他的詩在印度享有史詩的地位。他本人被許多印度教徒看作是一個聖人。詩集:漂鳥集、新月集等等。|
*1883年——長谷川清,台灣日治時期第18任總督。(1970年逝世)
*1926年——黃世惠,台灣企業家。
*1949年——瑪麗-喬治·比費,法國政治家。
*1959年——翁美玲,香港演員。(1985年逝世)
*1965年——諾曼·懷特塞德,前北愛爾蘭足球運動員。
*1978年——肖恩·馬里昂,美國職業籃球運動員。
*1981年——林津平,台灣棒球選手。
*1983年——曾嘉敏,台灣棒球選手。
*1987年——紺野朝美,日本歌手。
*生年不明——鐵炮塚葉子,日本動畫聲優。
|[img[http://thm-a01.yimg.com/image/5c34d8bd6a0ed082]]|
| 紺野朝美 |
!!逝世
*1602年——李贄,中國作家。
*1805年——威廉·佩蒂,英國首相,輝格黨領袖。(1737年出生)
*1949年——李白,中國共產黨革命烈士。
*1981年——杜聿明,中國軍事家。
*2007年——迭戈·科拉萊斯,美國拳擊運動員。(1977年出生)
*2007年——周策縱,中國歷史學家。(1916年1月7日出生)
!!節假日和習俗
!!參考文獻
維基百科http://zh.wikipedia.org/w/index.php?title=5%E6%9C%887%E6%97%A5&variant=zh-tw
!大事記
*1497年——阿美利哥·維斯普西首航美洲,確認美洲不是印度。
*1503年——哥倫布率領的西班牙船隊到達開曼群島,他們成為首批到來的歐洲人。
*1716年——《康熙字典》編成。
**清朝康熙年間由文華殿大學士兼戶部尚書張玉書及經篩講官、文淵閣大學士兼吏部尚書陳廷敬擔任主編。
*1857年——由印度人組成的印度軍隊在米魯特發生兵發,殺死英國軍官,印度民族起義爆發。
**印度民族起義一般指1857年到1858年發生在北部和中部印度的反對英國統治的民族起義。這次起義終結了英國通過東印度公司管理印度的體制,使得印度置於英國直接統治之下。
*1865年——美國南部邦聯的總統傑佛森·戴維斯被俘。
*1871年——法國和普魯士的代表簽訂《法蘭克福條約》,法國以割地賠款的方式結束普法戰爭。
**普法戰爭
***時間
****1870-1871
***背景
****拿破崙三世阻撓日爾曼統一
****西班牙王位問題
***經過
****普軍每戰必勝
****色當一役中拿破崙三世被俘
***結果
****普法訂約
****徳意志帝國成立
****全境統一
*1877年——羅馬尼亞宣布獨立。
*1905年——上海工商界發起反對美國迫害華工、抵制美貨運動。
*1906年——俄國第一屆國家杜馬會議召開。
*1933年——納粹德國學生焚書。
*1940年——英國首相張伯倫辭去職務,並正式向國王喬治六世推薦邱吉爾繼任首相一職。
**邱吉爾
| 邱吉爾 |>|h
| 英國人 |>|
| [img[http://thm-a03.yimg.com/image/bda5f6d55ddf635c]] |邱吉爾於1940年至1945年出任英國首相,任期內領導英國在第二次世界大戰聯合美國、對抗德國,取得勝利,邱吉爾被認為是20世紀最重要的政治領袖之一 |
*1940年——納粹德國繞過馬奇諾防線對英法發動閃電戰,同時向荷蘭、比利時、盧森堡三國宣戰。
*1941年——納粹德國副元首魯道夫·赫斯獨自駕機飛往蘇格蘭
*1948年——中華民國憲法的附屬條款動員戡亂時期臨時條款》公布實施,賦予總統緊急處分的權力。
**《動員戡亂時期臨時條款》
***時間
****1948年5月10日公布實施,1991年經國民大會決議及總統公告才於同年5月1日廢止
***背景
****抗日戰爭剛結束的同時,中國共產黨軍隊的勢力逐漸擴大。
***條約內容
****規定總統在動員戡亂時期,為避免國家或人民遭遇緊急危難,或應付財政經濟上重大變故,得經行政院會議之決議,為緊急處分,不受《憲法》第39條[1]或第43條[2]所規定程序之限制。
*1948年——韓國單獨舉行選舉,朝鮮分裂
*1949年——德國被分裂為東德和西德兩部分。
**雅爾達協定造成的結果。
*1967年——美國空襲海防,越南戰爭升級。
*1972年——世界衛生組織承認中華人民共和國是中國的唯一合法代表
*1976年——新加坡總理李光耀訪問中國。
*1978年——《實踐是檢驗真理的唯一標準》一文發表,鄧小平等人發起對華國鋒「兩個凡是」主張的批評
**《實踐是檢驗真理的唯一標準》:是由南京大學哲學系教師胡福明原作,經過多人修改,最終由胡耀邦審定的一篇文章。這篇文章的發表,是鄧小平等人對華國鋒等人主張的「兩個凡是」理論進行的抨擊,標志著真理標準大討論的開始。
*1981年——密特朗當選法國總統,這是法國社會黨首次贏得總統職位。
*1982年——香港地鐵荃灣線啟用
*1994年——曼德拉宣誓就任南非新總統。
**曼德拉
| 納爾遜·羅利拉拉·曼德拉 |>|h
|>| 南非國父 |
|[img[http://tbn1.google.com/images?q=tbn:pAGxd8J4hARSCM:http://images4.icxo.com/200710/20071019101182.jpg]]|南非首位黑人總統。|
*2002年——一列由英國倫敦駛往諾福克郡的列車在半途發生出軌翻覆意外,造成數十人受傷七人喪生的悲劇。
*2007年——英國首相布萊爾在塞奇菲爾德選區的特里姆登工黨活動中心宣布辭去工黨主席職務,並將於6月27日離任首相一職。
!!出生
*1899年——張大千,中國國畫藝術大師。(卒於1983年)
**張大千
| 張大千 |>|h
|>| 中國 |
|[img[http://thm-a04.yimg.com/image/10bc85f3d195fec2]]|張大千(1899年5月10日-1983年4月2日),最早本名張正權,後改名張爰、張蝯,小名季,號季爰,別署大千居士、下里巴人、齋名大風堂,生於中國四川內江。自幼習畫,歷經臨摹、攝各家之長、創立自己風格等階段。其畫由繁到簡,婉約秀麗到豁達豪放,在畫藝上有著精勤日新的氣魄,優美深博的內涵。他的「新文人畫」,受西方藝術影響,改變了傳統潑墨、破墨技法,完成其新形式和新風格的潑墨、潑彩。張大千影響台灣戰後水墨畫甚大,主要是他調和了文人畫派和職業畫派。「張大千現象」對於台灣水墨畫的藝術活動、媒體、傳播、藝術行銷、網路資訊等文化產業的提振有著甚大的社會經濟功能。|
| 評論 |齊白石:「一筆一畫,無不意在筆先,神與古會。」 徐悲鴻:1936年,上海中華書局出版《張大千畫集》,徐悲鴻作序,推譽「五百年來一大千」 |
*1923年——霍英東,香港企業家。(卒於2006年)
*1957年——席德·維瑟斯,英國貝斯手(性手槍樂團)。(卒於1979年)
*1960年——博諾,愛爾蘭歌手,U2的主唱。
*1977年——何韻詩,香港女歌手。
*1979年——李孝利,韓國女歌手。
*1993年——志田未來,日本隸屬於研音的女演員。
|[img[http://upload.wikimedia.org/wikipedia/commons/thumb/a/ad/Bono_U2_at_press_conference_2000.jpeg/230px-Bono_U2_at_press_conference_2000.jpeg]]|[img[http://tbn1.google.com/images?q=tbn:fe8NyUfD3-HpBM:http://hiphotos.baidu.com/mu1640/pic/item/6ca4dfea2a42e0d4d539c9c1.jpg]]|
| 博諾,U2的主唱 | 志田未來|
!!逝世
*1774年——路易十五,法國國王。
*1829年——托馬斯·楊,英國物理學家。(1773年出生)
*1863年——石牆傑克森,美國內戰期間著名的南軍將領。
*1889年——謝德林,俄國作家。
*1904年——亨利·莫頓·史丹利,英裔美籍探險家與記者。(1841年出生)
*1914年——威廉·亞力山大·史勿夫,英國爵士。基督少年軍的創辦人。(1854年出生)
*1917年——譚鑫培,京劇演員。
*1977年——瓊·克勞馥,美國奧斯卡影后
*1982年——馬寅初,中國經濟學家及教育家。
*1988年——沈從文,中國作家。(1902年出生)
**原名沈岳煥,生於中國湖南省鳳凰縣(今湘西土家族苗族自治州),他的祖母是苗族,母親是土家族。是中國現代著名的文學家、小說家、散文家和考古學專家
*2006年——林挺生,88歲,前大同公司董事長。
*2008年——廖風德,57歲,國民黨員,中華民國內定內政部長。
!!節假日和習俗
!!參考文獻
維基百科http://zh.wikipedia.org/w/index.php?title=5%E6%9C%8810%E6%97%A5&variant=zh-tw#.E8.8A.82.E5.81.87.E6.97.A5.E5.92.8C.E4.B9.A0.E4.BF.97
[img[http://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Amaterasu_cave_crop.jpg/150px-Amaterasu_cave_crop.jpg]]
[img[http://thm-a02.yimg.com/image/51dd9f56b8dcb4a8]]
海坊主(うみぼうず)是日本傳說中一種居住在大海中的妖怪,據說它會弄沉呼喊海坊主的人類所搭乘的船隻。傳說中,海坊主擁有大且圓滑的頭部。
!主要聲優
薬売り 声 - 櫻井孝宏
!!「座敷童子」
志乃 声 - 田中理恵
久代 声 - 藤田淑子
徳次 声 - 塩屋浩三
直助 声 - 竹本英史
若だんな 声 - 沼田祐介
座敷童子 声 - 日比愛子
!!「海坊主」
加世 声 - ゆかな (小紅豆)
源慧 声 - 速水奨
菖源 声 - 浪川大輔
佐佐木兵衛 声 - 阪口大助
柳幻殃斉 声 - 関智一
三國屋多門 声 - 高戸靖広
!!「のっぺらぼう」
お蝶 声 - 桑島法子
キツネ面の男 声 - 緑川光
お蝶の実母 声 - 真山亜子
お蝶の亭主 声 - 竹本英史
姑 声 - 上村典子 javascript:;
弟の嫁 声 - 佐佐木亜紀
義理の弟 声 - 岡本寛志
お奉公 声 - 福原耕平
!!「鵺」
大澤廬房 声 - 青野武
室町具慶 声 - 竹本英史
半井淡澄 声 - 広瀬正志
実尊寺惟勢 声 - 内田直哉
瑠璃姫 声 - 山崎和佳奈
老婆 声 - 小林由利
少女 声 - 鎌田梢
!!「化貓 」
森谷清 声 - 竹本英史
福田寿太郎 声 - 岩崎ひろし
門脇栄 声 - 稲葉実
木下文平 声 - 佐々木誠二
野本チヨ 声 - ゆかな
山口ハル 声 - 沢海陽子
小林正男 声 - 日比愛子
市川節子 声 - 折笠富美子
!製作人員
監督 - 中村健治
キャラクターデザイン・総作画監督 - 橋本敬史
脚本 - 横手美智子、小中千昭、高橋郁子、石川学
美術監督 - 倉橋隆、保坂由美
アニメーション制作 - 東映アニメーション
音楽 - 高梨康治
[img[http://image.17173.com/bbs/upload/2006/03/10/1141934788.jpg]]
鵺,或稱鵼,是日本的傳說生物之一。鵺出現於《平家物語》當中,據描述牠擁有猴子的相貌、貍的身軀、虎的四肢與及蛇的尾巴。(在日本古文獻中關於鵺的軀體記載並不統一,亦有指牠有著虎的軀體的說法)。鵺的叫聲像虎鶇(虎斑地鶇),被認為是不祥的叫聲。