Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Initial import

  • Loading branch information...
commit 7e3e387104d4ba2655d34da6fcdde02c599838e5 1 parent 06f7e6e
@gabebw authored
Showing with 48,047 additions and 0 deletions.
  1. +12 −0 accordion-test.js
  2. +1 −0  admin/.htpasswd
  3. +16 −0 admin/TODO.txt
  4. +8 −0 admin/a.php
  5. +1,476 −0 admin/buffy.txt
  6. +48 −0 admin/callbacks/cb_ep.php
  7. +42 −0 admin/callbacks/cb_get_all_quotes.php
  8. +86 −0 admin/callbacks/cb_quote-jquery.php
  9. +86 −0 admin/callbacks/cb_quote.php
  10. +76 −0 admin/css/Copy of edit.css
  11. +84 −0 admin/css/admin.css
  12. BIN  admin/css/cssimg/admin.png
  13. BIN  admin/css/cssimg/offedit.png
  14. BIN  admin/css/cssimg/quoteedit.png
  15. BIN  admin/css/cssimg/refedit.png
  16. +40 −0 admin/css/edit.css
  17. +95 −0 admin/css/modalbox.css
  18. BIN  admin/css/spinner.gif
  19. +10 −0 admin/edit-ref.php
  20. +35 −0 admin/edit.php
  21. +51 −0 admin/episode-add.php
  22. +10 −0 admin/episode-edit.php
  23. +27 −0 admin/episode.php
  24. BIN  admin/img/add.png
  25. BIN  admin/img/add2.png
  26. BIN  admin/img/addquote.png
  27. BIN  admin/img/addquote.xcf
  28. BIN  admin/img/admin.png
  29. BIN  admin/img/offedit.png
  30. BIN  admin/img/qbox.png
  31. BIN  admin/img/qbox.xcf
  32. BIN  admin/img/quotebox.xcf
  33. BIN  admin/img/quoteedit.png
  34. BIN  admin/img/quotemode.png
  35. BIN  admin/img/quotemode.xcf
  36. BIN  admin/img/rbox.png
  37. BIN  admin/img/rbox.xcf
  38. BIN  admin/img/refedit.png
  39. BIN  admin/img/remove.png
  40. +68 −0 admin/includes/CssGenerator.class.php
  41. +164 −0 admin/includes/EpisodePrinter.class.php
  42. +165 −0 admin/includes/JsGenerator.class.php
  43. +349 −0 admin/includes/TranscriptParser.class.php
  44. +15 −0 admin/includes/actors.php
  45. +5 −0 admin/includes/admin-bottom.php
  46. +68 −0 admin/includes/admin-constants.php
  47. +11 −0 admin/includes/admin-setup.php
  48. +34 −0 admin/includes/admin-top.php
  49. +25 −0 admin/includes/cast-nicknames.php
  50. +33 −0 admin/includes/db-setup.php
  51. +556 −0 admin/includes/ez_sql_core.php
  52. +29 −0 admin/includes/ezsql/change_log.htm
  53. +3,731 −0 admin/includes/ezsql/ez_sql_help.htm
  54. +185 −0 admin/includes/ezsql/ez_sql_with_smarty.html
  55. +60 −0 admin/includes/ezsql/mssql/demo.php
  56. +387 −0 admin/includes/ezsql/mssql/ez_sql_mssql.php
  57. +45 −0 admin/includes/ezsql/mysql/demo.php
  58. +53 −0 admin/includes/ezsql/mysql/disk_cache_example.php
  59. +42 −0 admin/includes/ezsql/oracle8_9/demo.php
  60. +56 −0 admin/includes/ezsql/oracle8_9/disk_cache_example.php
  61. +274 −0 admin/includes/ezsql/oracle8_9/ez_sql_oracle8_9.php
  62. +9 −0 admin/includes/ezsql/pdo/demo.php
  63. +299 −0 admin/includes/ezsql/pdo/ez_sql_pdo.php
  64. +55 −0 admin/includes/ezsql/postgresql/demo.php
  65. +269 −0 admin/includes/ezsql/postgresql/ez_sql_postgresql.php
  66. +540 −0 admin/includes/ezsql/readme.txt
  67. +524 −0 admin/includes/ezsql/shared/ez_sql_core_2.1_debughack_0.2alpha.php
  68. +560 −0 admin/includes/ezsql/shared/ez_sql_core_202console.php
  69. +61 −0 admin/includes/ezsql/shared/readme_debughack_0.2alpha.txt
  70. +45 −0 admin/includes/ezsql/sqlite/demo.php
  71. +207 −0 admin/includes/ezsql/sqlite/ez_sql_sqlite.php
  72. BIN  admin/includes/ezsql/sqlite/sqlite_test.db
  73. +266 −0 admin/includes/fkdb.php
  74. +6 −0 admin/includes/functions-episode-specific.php
  75. +13 −0 admin/includes/functions-html.php
  76. +182 −0 admin/includes/functions.php
  77. +806 −0 admin/includes/php-json/JSON.php
  78. +21 −0 admin/includes/php-json/LICENSE
  79. +521 −0 admin/includes/php-json/Test-JSON.php
  80. +210 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON.html
  81. +200 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_AssocArray_TestCase.html
  82. +148 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_Empties_TestCase.html
  83. +226 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_EncDec_TestCase.html
  84. +96 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_Error.html
  85. +174 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_ErrorSuppression_TestCase.html
  86. +200 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_NestedArray_TestCase.html
  87. +200 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_Object_TestCase.html
  88. +174 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_Spaces_Comments_TestCase.html
  89. +148 −0 admin/includes/php-json/doc/Services_JSON/Services_JSON_UnquotedKeys_TestCase.html
  90. +197 −0 admin/includes/php-json/doc/Services_JSON/_JSON_php.html
  91. +168 −0 admin/includes/php-json/doc/Services_JSON/_Test-JSON_php.html
  92. +13 −0 admin/includes/php-json/doc/blank.html
  93. +60 −0 admin/includes/php-json/doc/classtrees_Services_JSON.html
  94. +457 −0 admin/includes/php-json/doc/elementindex.html
  95. +456 −0 admin/includes/php-json/doc/elementindex_Services_JSON.html
  96. +51 −0 admin/includes/php-json/doc/errors.html
  97. +24 −0 admin/includes/php-json/doc/index.html
  98. +45 −0 admin/includes/php-json/doc/li_Services_JSON.html
  99. +32 −0 admin/includes/php-json/doc/media/banner.css
  100. +134 −0 admin/includes/php-json/doc/media/stylesheet.css
  101. +27 −0 admin/includes/php-json/doc/packages.html
  102. +21 −0 admin/includes/php-json/doc/todolist.html
  103. +123 −0 admin/includes/setup-tables.php
  104. +40 −0 admin/includes/setup/bottom.php
  105. +111 −0 admin/includes/setup/db format.mysql
  106. +19 −0 admin/includes/setup/head.php
  107. +139 −0 admin/includes/setup/setup-tables.php
  108. +125 −0 admin/includes/setup/setup.php
  109. +24 −0 admin/includes/setup/siteinfo.php
  110. +11 −0 admin/includes/setup/top.php
  111. +7 −0 admin/index.php
  112. +87 −0 admin/js/debug.js
  113. +13 −0 admin/js/edit_transcript.js
  114. +10 −0 admin/js/global_load-jquery.js
  115. +17 −0 admin/js/global_load.js
  116. +4,376 −0 admin/js/jquery-1.3.2.js
  117. +19 −0 admin/js/jquery-1.3.2.minified.js
  118. +50 −0 admin/js/jquery-extras.js
  119. +8,970 −0 admin/js/jquery-ui-all-1.6rc6.js
  120. +291 −0 admin/js/jquery-ui-core-1.5.3.js
  121. +534 −0 admin/js/jquery-ui-core-1.6rc6.js
  122. +128 −0 admin/js/jquery.color.js
  123. +505 −0 admin/js/jquery.jeditable.js
  124. +573 −0 admin/js/modalbox.js
  125. +4,221 −0 admin/js/prototype.js
  126. +512 −0 admin/js/quoteEditor-jquery.class.js
  127. +379 −0 admin/js/quoteEditor.class.js
  128. +136 −0 admin/js/scriptaculous/builder.js
  129. +966 −0 admin/js/scriptaculous/controls.js
  130. +975 −0 admin/js/scriptaculous/dragdrop.js
  131. +1,123 −0 admin/js/scriptaculous/effects.js
  132. +59 −0 admin/js/scriptaculous/scriptaculous.js
  133. +276 −0 admin/js/scriptaculous/slider.js
  134. +6 −0 admin/js/utility.js.php
  135. +21 −0 admin/quote.php
  136. +23 −0 admin/standards.php
  137. +11 −0 array-merge-test.php
  138. +16 −0 css/style.css
  139. +193 −0 fankit.po
  140. +104 −0 fk-admin-menu.php
  141. +75 −0 fk-box-cast.php
  142. +150 −0 fk-box-character.php
  143. +133 −0 fk-box-episode.php
  144. +175 −0 fk-boxes.php
  145. +25 −0 fk-debug.php
  146. +20 −0 fk-error.php
  147. +139 −0 fk-install.php
  148. +137 −0 fk-lib-cast.php
  149. +201 −0 fk-lib-character.php
  150. +142 −0 fk-lib-episode.php
  151. +177 −0 fk-lib.php
  152. +68 −0 fk-options-page.php
  153. +66 −0 fk-options-page2.php
  154. +7 −0 fk-quotes.php
  155. +174 −0 fk-settings.php
  156. +1 −0  fk-uninstall.php
  157. +806 −0 includes/JSON.php
  158. +21 −0 includes/LICENSE
  159. +521 −0 includes/Test-JSON.php
  160. +210 −0 includes/doc/Services_JSON/Services_JSON.html
  161. +200 −0 includes/doc/Services_JSON/Services_JSON_AssocArray_TestCase.html
  162. +148 −0 includes/doc/Services_JSON/Services_JSON_Empties_TestCase.html
  163. +226 −0 includes/doc/Services_JSON/Services_JSON_EncDec_TestCase.html
  164. +96 −0 includes/doc/Services_JSON/Services_JSON_Error.html
  165. +174 −0 includes/doc/Services_JSON/Services_JSON_ErrorSuppression_TestCase.html
  166. +200 −0 includes/doc/Services_JSON/Services_JSON_NestedArray_TestCase.html
  167. +200 −0 includes/doc/Services_JSON/Services_JSON_Object_TestCase.html
  168. +174 −0 includes/doc/Services_JSON/Services_JSON_Spaces_Comments_TestCase.html
  169. +148 −0 includes/doc/Services_JSON/Services_JSON_UnquotedKeys_TestCase.html
  170. +197 −0 includes/doc/Services_JSON/_JSON_php.html
  171. +168 −0 includes/doc/Services_JSON/_Test-JSON_php.html
  172. +13 −0 includes/doc/blank.html
  173. +60 −0 includes/doc/classtrees_Services_JSON.html
  174. +457 −0 includes/doc/elementindex.html
  175. +456 −0 includes/doc/elementindex_Services_JSON.html
  176. +51 −0 includes/doc/errors.html
  177. +24 −0 includes/doc/index.html
  178. +45 −0 includes/doc/li_Services_JSON.html
  179. +32 −0 includes/doc/media/banner.css
  180. +134 −0 includes/doc/media/stylesheet.css
Sorry, we could not display the entire diff because too many files (392) changed.
View
12 accordion-test.js
@@ -0,0 +1,12 @@
+jQuery(document).ready(
+ function(){
+ jQuery('#myAccordion').Accordion({
+ headerSelector: 'dt',
+ panelSelector: 'dd',
+ activeClass: 'myAccordionActive',
+ hoverClass: 'myAccordionHover',
+ panelHeight: 200,
+ speed: 300
+ });
+ }
+);
View
1  admin/.htpasswd
@@ -0,0 +1 @@
+gbw:gbJzpUtJZ/gF.
View
16 admin/TODO.txt
@@ -0,0 +1,16 @@
+Make an icon to click to make someone important/not important
+- if not important, remove their cast page! - ask for confirmation
+
+Refs??
+- yeah, in general: "???"
+- how to add/remove/show them?
+- then have reference category editor
+- have reference be by line.
+- a reference is "attached" to a word, but have a little "edit refs for this line" link by the line instead of splitting the line and wrapping each word.
+- of course, wrap each word once they hit "edit refs", but not until then
+in the link/box by the line, show all ref words for that line
+"SELECT thing FROM ref WHERE season=2 AND ep_num=1 AND line_num=23"
+
+add editor for editing cast member name
+- run a query to see if it's important & return that from callback?
+- like ['Veronica Mars', true] or {name: 'Veronica Mars', important: true}
View
8 admin/a.php
@@ -0,0 +1,8 @@
+<?php
+require 'includes/TranscriptParser.class.php';
+$tp = new TranscriptParser('buffy.txt', 1, 1);
+print_r($tp);
+echo "\n";
+$tp->parse();
+echo "\n";
+?>
View
1,476 admin/buffy.txt
@@ -0,0 +1,1476 @@
+BUFFY, THE VAMPIRE SLAYER
+Welcome To The Hellmouth
+
+Written by: Joss Whedon
+Directed by: Charles Martin Smith
+Transcribed by: AleXander Thompson
+
+TRANSCRIPT PROVIDED BY TWIZ TV.COM
+Copyright (c) 1997 Alexander Thompson
+
+ ~~~~~~~~~~ Disclaimer ~~~~~~~~~~
+
+I do not own the characters in this story, nor do I own any rights to
+the television show "Buffy the Vampire Slayer". They were created by
+Joss Whedon and belong to him, Mutant Enemy, Sandollar Television, Kuzui
+Enterprises, 20th Century Fox Television and the WB Television Network.
+
+This is not a novelization or a script. It is a straightforward and dry
+transcript of the episode "Welcome to the Hellmouth". It also includes
+descriptions of the settings, action scenes and camera movements where I
+felt they were needed.
+
+I made every effort to accurately transcribe the dialogue from this
+episode. If you notice anything that is transcribed incorrectly, please
+let me know and I will post an update. rev 99.06.23
+
+This episode was originally broadcast on March 10, 1997
+
+ ~~~~~~~~~~ Prologue ~~~~~~~~~~
+
+In every generation there is a Chosen One. She alone will stand against
+the vampires, the demons and the forces of darkness. She is the Slayer.
+
+Sunnydale High School at night. The camera pans around from the side of
+the building to the main entrance. Cut to a hall. The camera moves down
+the hall past the trophy case and at the library turns to the right down
+another hall. Cut to a science classroom. The camera pans low along a
+row of desks. Cut to the windows. The counter in front of them is full
+of various things: a skeleton, some vertebrae, jars of things in
+formaldehyde, a skull and a microscope. A fist punches through a
+windowpane and reaches in to undo the clasp. It's a boy and a girl,
+sneaking into the school.
+
+Darla: Are you sure this is a good idea?
+
+Boy: It's a great idea, now come on.
+
+They crawl in. Cut to the hall. They come out of the classroom and walk
+down the hall.
+
+Darla: Do you go to school here?
+
+Boy: I used to. On top of the gym it's so cool. You can see the whole
+town.
+
+He continues down the hall, but she stops him close to the intersection.
+
+Darla: I, I, I, I don't wanna go up there.
+
+Boy: Aw, you can't wait, huh?
+
+Darla: We're just gonna get in trouble.
+
+Boy: Yeah, you can count on it.
+
+They almost kiss when Darla startles, draws a quick breath and turns her
+head around to look down the hall.
+
+Darla: What was that?
+
+Boy: What was what?
+
+Darla: I heard a noise.
+
+Boy: It's nothing!
+
+Darla: Uh, uh, maybe it's something.
+
+Boy: Or maybe it's some *thing*!
+
+Darla: That's not funny.
+
+He looks down the other hall.
+
+Boy: Hellooooo! (to Darla) There's nobody here.
+
+Darla: Are you sure? (looks away)
+
+Boy: Yes, I'm sure.
+
+Darla: Okay.
+
+She turns back to him all vamped out. She growls and bites him. He
+grunts in pain as they sink to the floor.
+
+Opening credits roll. Buffy's theme plays.
+
+ ~~~~~~~~~~ Part 1 ~~~~~~~~~~
+
+Buffy's room. The camera shows a shot from above of her in bed. She's
+having the nightmares, with visions of the Master's lair, the cemetery,
+the Master, of vampires and other demons, various events and artifacts.
+She wakes with a start.
+
+Joyce: (off camera) Buffy?
+
+Buffy: (sitting up) I'm up, Mom!
+
+Joyce: (off camera) Don't wanna be late for your first day!
+
+Buffy: (to herself) No... Wouldn't want that.
+
+Cut to the school. The camera pans from the street to the main building.
+Cut to Joyce pulling up to the school in her Jeep to drop off Buffy.
+
+Joyce: Okay!
+
+Buffy gets out.
+
+Joyce: Have a good time. I know you're gonna make friends right away,
+just think positive. (gives a thumbs up)
+
+Buffy looks through the open car door and gives her mother a quick nod.
+She turns to go and closes the door behind her.
+
+Joyce: And honey?
+
+Buffy looks back at her mom again.
+
+Joyce: Try not to get kicked out?
+
+Buffy: I promise.
+
+Joyce: Okay.
+
+Buffy faces the school and lets out a deep breath. Joyce drives off. Cut
+to Xander, doing his usual bob and weave through the crowd on his
+skateboard.
+
+Xander: 'Scuse me, comin' through, pardon me, 'scuse me, whoa! 'Scuse
+me, not sure how to stop! Please move, whoa, 'scuse me... (notices
+Buffy) Whoa!
+
+He stares at her and doesn't notice that he's headed right for the stair
+railing. He crashes into it and falls beneath it, grunting in pain.
+Willow walks up and has to step high to avoid tripping over his legs.
+
+Xander: I'm Okay. I feel good.
+
+She looks down at him, smiling and pulling her hair behind her ear.
+
+Xander: (sees her) Willow! You're so very much the person that I wanted
+to see! (gets up)
+
+Willow: Oh, really?
+
+They start walking toward the school.
+
+Xander: Yeah. You know, I kinda had a problem with the math.
+
+Willow: Uh, which part?
+
+Xander: The math. Can you help me out tonight, pleeeease, be my study
+buddy?
+
+Willow: Well, what's in it for me?
+
+Xander: A shiny nickel!
+
+Willow: Okay. Do you have 'Theories in Trig'? You should check it out.
+
+Xander: Check it out?
+
+Willow: From the library? Where the books live.
+
+Xander: Right, I'm there! See, I wanna change...
+
+Cut to the hall just inside the door.
+
+Jesse: Hey, hey!
+
+Xander: Hey, Jesse, what's what?
+
+Jesse: New Girl!
+
+Xander: That's right, I saw her. Pretty much a hottie!
+
+Willow: I heard someone was transferring...
+
+Xander: So tell!
+
+Jesse: Tell what?
+
+Xander: What's the sitch, what do ya know about her?
+
+Jesse: New girl!
+
+Xander: Well, you're certainly a font of nothing!
+
+Cut to Principal Flutie's office. Buffy is seated. He has her school
+records and walks around the desk to his chair as he looks them over.
+
+Mr. Flutie: Buffy Summers, sophomore, late of Hemery High in Los
+Angeles. Interesting record, quite a career...
+
+He sits, takes the sheet he's reading and tears it into four pieces.
+
+Mr. Flutie: Welcome to Sunnydale! A clean slate, Buffy, that's what you
+get here. What's past is past. We're not interested in what it says on a
+piece of paper, even if it says... (reads) Whoa.
+
+Buffy: Mr. Flutie...
+
+Mr. Flutie: All the kids here are free to call me Bob.
+
+Buffy: Bob...
+
+Mr. Flutie: But they don't.
+
+He begins reassembling the torn sheet.
+
+Buffy: I know my transcripts are a little... colorful.
+
+Mr. Flutie: Heeey... We're not caring about that. Do you think, uh,
+'colorful' is the word? (tapes the paper) Not, uh, 'dismal'?
+
+Buffy: Wasn't *that* bad!
+
+Mr. Flutie: You burned down the gym.
+
+Buffy: (exhales) I did, I really did, but... You're not seeing the big
+picture here, I mean, that gym was full of vampi... asbestos.
+
+Mr. Flutie: Buffy, don't worry. Any other school they might say 'watch
+your step', or 'we'll be watching you'... But, that's just not the way
+*here*. We want to service your needs, and help you to respect our
+needs. And if your needs and our needs don't mesh...
+
+He puts the poorly repaired sheet back into her file and slaps it shut.
+She gives him a thin, nervous smile.
+
+Cut to the hall. Buffy comes out of Mr. Flutie's office. She opens her
+bag and rummages through it as she walks into the hall right in front of
+a girl and a boy. The girl bumps into her, making her lose her grip on
+the bag and spill its contents.
+
+Buffy: Oh! Sorry!
+
+Girl: That's okay.
+
+Buffy: (looks down at the mess) Oh...
+
+Xander hears the noise, looks back, quickly comes over and squats down
+next to her to help her gather her things.
+
+Xander: Can I have you?
+
+She gives him a confused look.
+
+Xander: Duh... (chuckles) Can I help you?
+
+Buffy: (smiles) Thanks.
+
+Xander: I don't know you, do I?
+
+Buffy: I'm Buffy. I'm new.
+
+Xander: Xander. Is, is me. Hi. (smiles)
+
+Buffy: Um, thanks.
+
+They finish gathering up everything.
+
+Xander: Well, uh, maybe I'll see you around... maybe at school... since
+we... both... go there.
+
+Buffy: Great! (they stand up) It was nice to meet you.
+
+She starts down the hall.
+
+Xander: (unimpressed with himself) We both go to school. Very suave.
+Very not pathetic.
+
+He notices a stake still on the floor.
+
+Xander: Oh, hey! (picks it up) Hey, you forgot your... stake!
+
+Buffy doesn't hear him and continues down the hall. Xander holds on to
+the stake.
+
+Cut to a classroom. The teacher writes "The Black Death" on the board
+and then turns to the class.
+
+Teacher: It's estimated that about twenty-five million people died in
+that one four-year span. But the fun part of the Black Plague is that it
+originated in Europe how?
+
+Cordelia is taking notes. So is Buffy, seated next to her.
+
+Teacher: As an early form of germ warfare. If you'll look at the map on
+page sixty-three you can trace the spread of the disease into Rome, and
+then north...
+
+Buffy doesn't have a book and looks around for help. Cordelia notices
+and shares her book.
+
+Buffy: (to Cordelia) Thanks.
+
+Teacher: And this popular plague led to what social changes? Steve?
+
+The bell rings and the students get up to leave.
+
+Cordelia: Hi! I'm Cordelia. (offers her hand)
+
+Buffy: (accepts it) I'm Buffy.
+
+Cordelia: If you're looking for a textbook of your very own there's
+probably a few in the library.
+
+Buffy: Oh, great, thanks. (they get up) Where would that be?
+
+Cordelia: I'll show you, come on. (they start out of the classroom) So
+you're from Hemery, right? In L.A.?
+
+Buffy: Uh, yeah.
+
+Cordelia: Oh, I would *kill* to live in L.A. That close to that many
+shoes?
+
+Buffy has to laugh as they go into the hall.
+
+Cut to the two of them walking down another part of the hall.
+
+Cordelia: Well, you'll be okay here. If you hang with me and mine,
+you'll be accepted in no time. Of course, we do have to test your
+coolness factor. You're from L.A., so you can skip the written, but
+let's see. Vamp nail polish.
+
+Buffy: Um, over?
+
+Cordelia: So over. James Spader.
+
+Buffy: He needs to call me!
+
+Cordelia: Frappaccinos.
+
+Buffy: Trendy, but tasty.
+
+Cordelia: John Tesh.
+
+Buffy: The Devil.
+
+Cordelia: That was pretty much a gimme, but... you passed!
+
+Buffy: Oh, goody!
+
+They turn toward a drinking fountain. Willow is there. She straightens
+up and sees them coming.
+
+Cordelia: Willow! Nice dress! Good to know you've seen the softer side
+of Sears.
+
+Willow: Uh, oh, well, my mom picked it out.
+
+Cordelia: No wonder you're such a guy magnet. Are you done?
+
+Willow looks at the fountain, then back at Cordelia.
+
+Willow: Oh!
+
+She turns and leaves. Buffy watches her go for a moment, then looks back
+at Cordelia after she starts talking again.
+
+Cordelia: You wanna fit in here, the first rule is: know your losers.
+Once you can identify them all by sight (glances after Willow) they're a
+lot easier to avoid.
+
+Buffy lets out a nervous laugh and nods. She looks at Willow again, who
+has gone through the door at the end of the hall. Willow looks back at
+them before she continues.
+
+Cut to another area in the halls. The two of them continue their walk to
+the library.
+
+Cordelia: And if you're not too swamped with catching up you should
+come by the Bronze tonight.
+
+Buffy: The who?
+
+Cordelia: The Bronze. It's the only club worth going to around here.
+They let anybody in, but it's still the scene. It's in the bad part of
+town.
+
+Buffy: Where's that? (stops outside the library doors)
+
+Cordelia: About a half a block from the good part of town. (laughing)
+We don't have a whole lot of town here. But, um, you should show!
+
+Buffy: Well, I'll try. (looks toward the library) Uh, thanks.
+
+Cordelia: Good. So, um, I'll see you in gym, and you can tell me
+absolutely everything there is to know about you. (waves and goes)
+
+Buffy: (waves back) Great! (to herself) Oh, that sounds like fun.
+
+She goes into the library. Cut inside. She comes in and looks around. It
+looks deserted.
+
+Buffy: Hello? (continues in) Is anybody here?
+
+She looks at the book checkout counter and sees a newspaper. A picture
+has been circled. The caption above it reads "Local Boys Still Missing."
+Giles comes up behind her and taps her on the shoulder. She spins
+around, startled.
+
+Buffy: Ooo! (exhales) Anybody's here!
+
+Giles: Can I help you?
+
+Buffy: I was looking for some, well, books. I'm new.
+
+Giles: Miss Summers?
+
+Buffy: Good call! Guess I'm the only new kid, huh?
+
+Giles: I'm Mr. Giles. The librarian. I was told you were coming.
+
+He heads around behind the counter.
+
+Buffy: Great! So, um, I'm gonna need 'Perspectives on 20th Century...'
+
+Giles: (interrupting) I know what you're after!
+
+With a big grin on his face he pulls out a large old book with the word
+"VAMPYR" written in gold leaf on the front cover. Buffy looks up at him
+with an uneasy gaze.
+
+Buffy: That's not what I'm looking for.
+
+Giles: Are you sure?
+
+Buffy: I'm *way* sure.
+
+Giles: (confused) My mistake.
+
+He puts the book back behind the counter. Buffy quickly leaves.
+
+Giles: (straightening back up) So, what is it you said...
+
+He sees her go out of the library. Their first encounter leaves him
+puzzled.
+
+Cut to the girls' locker room. Two girls are discussing Buffy.
+
+Aphrodisia: The new kid? She seems kind of weird to me. What kind of
+name is Buffy?
+
+Girl: Hey, Aphrodisia!
+
+Aphrodisia: Oh, Hey!
+
+Aura: Well, the chatter in the caf is that she got kicked out, and
+that's why her mom had to get a new job.
+
+The girls work the combinations to their gym lockers.
+
+Aphrodisia: Neg!
+
+Aura: Pos! She was starting fights!
+
+Aphrodisia: Neg-ly!
+
+Aura: (opening her locker) Well I heard from Blue, and she said that...
+
+The dead boy falls out of the locker onto Aura's arm. She screams and
+lets the body fall.
+
+ ~~~~~~~~~~ Part 2 ~~~~~~~~~~
+
+The quad at school. Willow is sitting on a bench in front of a wall
+taking out her lunch. Buffy approaches her.
+
+Buffy: Uh, Hi! Willow, right?
+
+Willow: (looks up) Why? I-I mean, hi! Uh, did you want me to move?
+
+Buffy: Why don't we start with, 'Hi, I'm Buffy,' and, uh, then let's
+segue directly into me asking you for a favor. (sits next to her) It
+doesn't involve moving, but it does involve hanging out with me for a
+while.
+
+Willow: But aren't you hanging out with Cordelia?
+
+Buffy: I can't do both?
+
+Willow: Not legally.
+
+Buffy: (exhales) Look, I really wanna get by here, new school, and...
+Cordelia's been really nice... to me... anyway, but, um, I kinda have
+this burning desire not to flunk all my classes, and I heard a rumor
+that you were the person to talk to if I wanted to get caught up.
+
+Willow: Oh, I could *totally* help you out! Uh, if you have sixth
+period free we could meet in the library?
+
+Buffy: Or not. Or we could meet someplace quieter. Louder. Uh, that
+place just kinda gives me the wiggins.
+
+Willow: Oh, it has that effect on most kids. I love it, though, it's a
+great collection, and the new librarian is really cool.
+
+Buffy: He's new?
+
+Willow: Yeah, he just started. He was a curator at some British museum,
+or, or The British Museum, I'm not sure. But he knows everything, and he
+brought all these historical volumes and biographies, and am I the
+single dullest person alive?
+
+Buffy: Not at all.
+
+Xander hops up onto the wall behind the girls and sits on it between
+them. Jesse stands in front of them and drops his bag.
+
+Jesse: Hey!
+
+Xander: You guys busy? Are we interrupting? We're interrupting.
+
+He tosses his bag to Jesse.
+
+Buffy: Hey!
+
+Willow: Hey!
+
+Jesse: Hey there!
+
+He drops Xander's bag next to his own.
+
+Willow: Buffy, this is Jesse and that's Xander.
+
+Xander: Oh, me and Buffy go waaay back, old friends, very close. Then
+there's that period of estrangement where I think we were both growing
+as people, but now here we are, like old times, I'm quite moved.
+
+Jesse: Is it me, or are you turning into a bibbling idiot?
+
+Xander: No, it's, uh, it's not you.
+
+Buffy: Well, it's nice to meet you guys, I think.
+
+Xander jumps down to retrieve the stake from his bag.
+
+Jesse: Well, you know, we wanted to welcome ya, make ya feel at home,
+unless you have a scary home...
+
+Xander: And to return this. (holds up the stake) The only thing I can
+think is that you're building a really little fence. (hands it to her)
+
+Buffy: (takes it) Hah, no, um, a-a-actually it was for self-defense.
+Everyone has them in L.A. Pepper spray is just so pass�.
+
+Xander: So what do you do for fun, what do you like, what do you look
+for in a man, let's hear it.
+
+Jesse: If you have any dark, painful secrets you'd like us to publish?
+
+Buffy: Gee, everyone wants to know about me. How keen.
+
+Xander: Well, not much goes on in a one Starbucks town like Sunnydale.
+You're pretty big news.
+
+Buffy: I'm not. Really.
+
+Cordelia: (interrupts) Are these guys bothering you?
+
+Buffy: Uh, no!
+
+Willow: She's not hanging out with us.
+
+Jesse: (stands next to her) Hey! Cordelia!
+
+Cordelia: (to Jesse) Oh, please! (to Buffy) I don't mean to interrupt
+your downward mobility, but I just wanted to tell you that you won't be
+meeting Coach Foster, the woman with the chest hair, because gym was
+canceled due to the *extreme* dead guy in the locker.
+
+Buffy: What?
+
+Willow: What are you talking about?
+
+Cordelia: Some guy was stuffed in Aura's locker!
+
+Buffy: Dead.
+
+Cordelia: Totally dead. Way dead.
+
+Xander: It's not just a little dead, then?
+
+Cordelia: Don't you have an elsewhere to be?
+
+Jesse: Y'know, if you need a shoulder to cry on, or just to nibble
+on...
+
+Buffy: How did he die?
+
+Cordelia: I don't know.
+
+Buffy: Well, were there any marks?
+
+Cordelia: Morbid much! I didn't ask!
+
+Buffy: (looks at everyone) Um, I gotta book. I'll, I'll see you guys
+later.
+
+She grabs her things and leaves. Cordelia stares after her.
+
+Cordelia: What's her deal?
+
+Cut to outside the gym. Buffy sneaks up to an outside entrance. It's
+locked. She uses her strength to break the door and goes in, looking
+around to make sure no one sees her. Cut to the locker room. Buffy finds
+the body and pulls back the sheet. She sees the vampire bite.
+
+Buffy: Oh, great!
+
+Cut to the library. Buffy barges in.
+
+Buffy: Okay, what's the sitch?
+
+Giles: (in the stacks) Sorry?
+
+Buffy: You heard about the dead guy, right? The dead guy in the locker?
+
+Giles: (steps into the light) Yes.
+
+She drops her bag on the study table and heads up the stairs.
+
+Buffy: 'Cause, it's the weirdest thing. He's got two little, little
+holes in his neck, and all his blood's been drained. (meets him) Isn't
+that bizarre? Aren't you just going, ooo?
+
+Giles: I was afraid of this.
+
+Buffy: Well, *I* wasn't! It's my first day! I was afraid that I was
+gonna be behind in all my classes, that I wouldn't make any friends,
+that I would have last month's hair. I didn't think there'd be vampires
+on campus. And I don't care.
+
+Giles: Then why are you here?
+
+Buffy: To tell you that... I don't care, which... I don't, and... have
+now told you, so... bye. (turns away to go)
+
+Giles: Is he, w-will he... rise again?
+
+Buffy: (turns back) Who?
+
+Giles: The boy.
+
+Buffy: No. He's just dead.
+
+Giles: Can you be sure?
+
+Buffy: To make you a vampire they have to suck your blood. And then you
+have to suck their blood. It's like a whole big sucking thing. Mostly
+they're just gonna kill you. Why am I still talking to you?
+
+Buffy turns and goes down the stairs. Giles moves over to the railing.
+
+Giles: You really have no idea what's going on, do you? You think it's
+coincidence, your being here? That boy was just the beginning.
+
+Buffy: Oh, why can't you people just leave me alone?
+
+Giles: Because you are the Slayer. (comes down the stairs) Into each
+generation a Slayer is born, one girl in all the world, a Chosen One,
+one born with the strength and skill to hunt the vampires...
+
+Buffy: (interrupts and joins in) ...with the strength and skill to hunt
+the vampires, to stop the spread of their evil blah, blah, blah... I've
+heard it, okay?
+
+Giles: I really don't understand this attitude. You, you've accepted
+your duty, you, you've slain vampires before...
+
+Buffy: Yeah, and I've both been there and done that, and I'm moving on.
+
+Giles: What do you know about this town? (goes into his office)
+
+Buffy: It's two hours on the freeway from Neiman Marcus?
+
+Giles: Dig a bit in the history of this place. You'll find a, a steady
+stream of fairly odd occurrences. Now, I believe this whole area is a
+center of mystical energy, (comes back with four books) that things
+gravitate towards it that, that, that you might not find elsewhere.
+(sets them on the table)
+
+Buffy: Like vampires.
+
+He puts the volumes into Buffy's arms one by one as he lists off various
+monsters and demons.
+
+Giles: Like zombies, werewolves, incubi, succubi, everything you've
+ever dreaded was under your bed, but told yourself couldn't be by the
+light of day. They're all real!
+
+Buffy: What? You, like, sent away for the Time-Life series?
+
+Giles: Ah, w-w-w-yes.
+
+Buffy: Did you get the free phone?
+
+Giles: Um, the calendar.
+
+Buffy: Cool! But, okay, (gives back the books) first of all, I'm a
+Vampire Slayer. And secondly, I'm retired. Hey, I know! Why don't you
+kill 'em?
+
+Giles: I-I'm a Watcher, I-I haven't the skill...
+
+Buffy: Oh, come on, stake through the heart, a little sunlight... It's
+like falling off a log.
+
+Giles: A, a Slayer slays, a Watcher...
+
+Buffy: ...watches?
+
+Giles: Yes. No! (sets down the books) He, he trains her, he, he, he
+prepares her...
+
+Buffy: Prepares me for what? For getting kicked out of school? For
+losing all of my friends? For having to spend all of my time fighting
+for my life and never getting to tell anyone because I might endanger
+them? Go ahead! Prepare me.
+
+They just look at each other for a moment. Buffy exhales, turns and
+leaves the library in disgust. Giles hesitates for an instant.
+
+Giles: (to himself) Damn!
+
+He runs after Buffy. Xander walks out from behind the stacks.
+
+Xander: What?
+
+Cut to the hall. Giles catches up with Buffy.
+
+Giles: It's getting worse!
+
+Buffy: What's getting worse?
+
+He guides her over to the wall and speaks with her in a low voice.
+
+Giles: The influx of the undead, the... supernatural occurrences, it's
+been building for years. There's a reason why you're here and a reason
+why it's now!
+
+Buffy: Because now is the time my mom moved here.
+
+She tries to evade him, but he puts his arm out to stop her.
+
+Giles: Something's coming, something, something... something is, is
+gonna happen here. Soon!
+
+Buffy: Gee, can you vague that up for me?
+
+Giles: The signs, as far as I can tell, point to a crucial mystical
+upheaval, very soon. Days. Possibly less.
+
+Buffy: Oh, come on! This is Sunnydale! How bad an evil can there be
+here?
+
+Cut to outside the school. The camera descends behind some bushes and
+sinks through the ground into the lair of the Master. There are candles
+everywhere. Vampires bearing torches are gathering. The camera moves
+around the lair as Luke chants and eventually comes to rest on him.
+
+Luke: The sleeper will wake. The sleeper will wake. The sleeper will
+wake. The sleeper will wake, and the world will bleed. Amen!
+
+ ~~~~~~~~~~ Part 3 ~~~~~~~~~~
+
+Buffy's room. She's considering what to wear to the Bronze. She holds a
+shiny black outfit up to the mirror.
+
+Buffy: Hi! I'm an enormous slut! (holds up a blue floral dress) Hello!
+Would you like a copy of 'The Watchtower'? (lowers the dress) I used to
+be so good at this.
+
+Her mother comes into the room.
+
+Joyce: Hi, hon.
+
+Buffy returns her dresses to the closet.
+
+Buffy: Hey!
+
+Joyce: Are you, uh, going out tonight?
+
+Buffy: Yeah, I'm going to a club.
+
+Joyce: Oh. Will there be boys there?
+
+Buffy: No, Mom. It's a nun club.
+
+Joyce: Well, just be careful.
+
+Buffy: I will.
+
+Joyce: You know, I think we can make it work here. I've got my positive
+energy flowing... I'm gonna get the Gallery on its feet... Oh, uh, we
+may have found a space today.
+
+Buffy: That's great.
+
+Joyce: Oh, and that school is a, a very nurturing environment, which is
+just what you need.
+
+Buffy: Well, actually...
+
+Joyce: Oh, not too nurturing. I know, you're sixteen, I've read all
+about the dangers of over-nurturing.
+
+Buffy goes to her bed and lays out a couple of outfits.
+
+Joyce: It's hard. New town and everything... It is for me, too. I'm
+trying to make it work. (takes her daughter's hands in hers) I'm *going*
+to make it work.
+
+Buffy: I know.
+
+Joyce: Oh, you're a good girl, Buffy, (pats her on the head) you just
+fell in with the wrong crowd. But that is all behind us now.
+
+Buffy: It is. From now on I am only going to hang out with the living.
+(they let go of their hands, and she picks up her dresses) I mean,
+lively. People.
+
+Buffy heads back to her closet with an awkward look on her face.
+
+Joyce: Hmm. Okay. You have fun.
+
+Cut outside later that evening. Buffy is walking down a dark street,
+when someone appears behind her. She senses that she is being followed.
+After walking for a ways, when she gets a chance she ducks down an alley
+and looks around for a place to hide. A cat yowls and kicks some cans as
+it runs away. She spies something above her. Angel comes into the alley
+but doesn't see her. As he slowly walks along, the camera pulls up to
+reveal Buffy in a handstand on a bar high above the pavement. When Angel
+has passed underneath her, she swings down and kicks him in the back. He
+is knocked to the ground, and Buffy positions herself above him with a
+foot on his chest.
+
+Angel: Ah, heh. Is there a problem, ma'am?
+
+Buffy: Yeah, there's a problem. Why are you following me?
+
+Angel: I know what you're thinking. Don't worry, I don't bite.
+
+She backs off and lets him get up, but keeps her fighting stance.
+
+Angel: Truth is, I thought you'd be taller, or bigger muscles and all
+that. You're pretty spry, though. (massages his neck)
+
+Buffy: What do you want?
+
+Angel: The same thing you do.
+
+Buffy: (lets down her guard) Okay. What do I want?
+
+Angel: (steps toward her) To kill them. To kill them all.
+
+Buffy: Sorry, that's incorrect. But you do get this lovely watch and a
+year's supply of Turtle Wax. What I want is to be left alone!
+
+She starts a determined walk away.
+
+Angel: Do you really think that's an option anymore? You're standing at
+the Mouth of Hell. And it's about to open.
+
+She stops, turns to him and looks at him with a wide-eyed gaze. He
+reaches into his jacket and pulls out a small box.
+
+Angel: Don't turn your back on this. (tosses her the box) You've gotta
+be ready.
+
+Buffy: What for?
+
+Angel: For the Harvest.
+
+Buffy: Who are you?
+
+Angel: Let's just say... I'm a friend. (starts to leave)
+
+Buffy: Yeah, well, maybe I don't want a friend.
+
+Angel: (turns back) I didn't say I was yours.
+
+He leaves. Buffy stares after him for a moment, then opens the box. It
+contains a silver cross and chain. She takes it out, holds it in her
+hand and takes another glance in his direction.
+
+Cut to outside the Bronze. People are arriving and meeting. Buffy is
+wearing the cross around her neck. She walks up to the entrance, gives
+the doorman some cash and goes in. Sprung Monkey is playing "Believe"
+loudly, and the dance floor is crowded with people.
+
+Lyrics: Oh, I just want to believe / Can you hear me? / Can you see me?
+/ What's inside of me? / Oh, I just want to believe / If my life can
+have a purpose / Help me to believe / Oh, I just want to believe / Can
+you hear me? / Can you see me? / What's inside of me? / Oh, I just want
+to believe / If my life can have a purpose / Help me to believe
+
+Buffy moves to the music a bit. She sees a guy waving in her direction
+and waves back, then notices someone behind her waving back and pulls
+her hand down, embarrassed.
+
+Lyrics: Everybody wants to find the circle / The line of truth that has
+no end / Because so many nights I've slept with the feeling of empty /
+And I say, right now I'm ready to believe
+
+She finds the bar and sees Willow sitting there.
+
+Buffy: Hey!
+
+Willow: Oh, hi!
+
+Buffy walks around her and sits on the stool next to her. Willow turns
+to face her.
+
+Willow: Hi!
+
+Buffy: Oh, you're here with someone?
+
+Willow: No, I'm just here. I thought Xander was gonna show up.
+
+Buffy: Oh, are you guys going out?
+
+Willow: No, we're just friends. We used to go out, but we broke up.
+
+Buffy: How come?
+
+Willow: He stole my Barbie. (Buffy looks confused) Oh, we were five.
+
+Buffy: Oh.
+
+Willow: I-I-I don't actually date a whole lot... lately.
+
+Buffy: Why not?
+
+Willow: Well, when I'm with a boy I like, it's hard for me to say
+anything cool, or, or witty, or at all. I-I can usually make a few vowel
+sounds, and then I have to go away.
+
+Buffy: It's not *that* bad!
+
+Willow: No, i-it is. I think boys are more interested in a girl who can
+talk.
+
+Buffy: You really *haven't* been dating lately.
+
+Willow: It's probably easy for you.
+
+Buffy: Yeah, real easy.
+
+Willow: I-I mean you don't seem too shy.
+
+Buffy: Well, my philosophy, do you wanna hear my philosophy?
+
+Willow: Yeah, I do!
+
+Buffy: Life is short.
+
+Willow: Life is short!
+
+Buffy: Not original, I'll grant you, but it's true. You know? Why waste
+time being all shy and worrying about some guy, and if he's gonna laugh
+at you. Seize the moment, 'cause tomorrow you might be dead.
+
+Willow: Oh, that's nice!
+
+Buffy looks up and sees Giles on the upper level.
+
+Buffy: Um, I'll be back in a minute. (gets up to go)
+
+Willow: Oh, tha-that's okay, you don't have to come back.
+
+Buffy: (smiles) I'll be back in a minute.
+
+Willow: (to herself) Seize the moment.
+
+Cut to Buffy, making her way to the stairs. The camera follows her up.
+
+Lyrics: I feel love with my friends / I feel love in my songs / If I
+could just hold love / Then all the answers might come / I said, oh, if
+we're all children of God / And we just turned away / I got a lack of
+belief / I said a world without faith / It's time we turn back around
+
+Buffy: (finds Giles) So, you like to party with the students. Isn't
+that kinda skanky?
+
+Giles: Oh, right, this is me having fun. Watching... clown hair prance
+about is hardly my idea of a party. I'd much rather be at home with a
+cup of Bovril and a good book.
+
+Buffy: You need a personality, stat!
+
+Giles: (points to the crowd below) This is a perfect breeding ground
+for vampire activity. It's dark, it's crowded... Besides, I knew you
+were likely to show up, and I have to make you understand...
+
+Buffy: ...that the Harvest is coming. I know, your friend told me.
+
+Giles: What did you say?
+
+Buffy: The Harvest. That mean something to you? 'Cause I'm drawing a
+blank.
+
+Giles: I'm not sure. Uh... W-who told you this?
+
+Buffy: This... guy. Dark, gorgeous in an annoying sort of way. I
+figured you two were buds.
+
+Giles: No. The Harvest. Did he say anything else?
+
+Buffy: Something about the Mouth of Hell. I *really* didn't like him!
+
+The band has finished its song and there's lots of applause. They soon
+start their next song, "Swirl". Giles moves around Buffy, leans on the
+railing and looks down at the crowd.
+
+Giles: Look at them, throwing themselves about, completely unaware of
+the danger that surrounds them.
+
+Buffy: Lucky them.
+
+Giles: Or perhaps you're right. Perhaps there is no trouble coming, the
+signs could be wrong. It's not as though you've been having the
+nightmares.
+
+Buffy is silent. Cut to below.
+
+Cordelia: My mom doesn't even *get* out of bed anymore. And the doctor
+says it's Epstein-Barr. I'm like, pleeease! It's chronic hepatitis, or
+at least chronic fatigue syndrome. I mean, *nobody* cool has Epstein-
+Barr anymore.
+
+Jesse spots Cordelia and comes over.
+
+Jesse: Hey, Cordelia!
+
+Cordelia: Oh, yay, it's my stalker. (makes a face)
+
+Jesse: Hey, you, uh, you look great!
+
+Cordelia: Well, I'm glad we had this little chat.
+
+Jesse: (coughs) Listen, uh, you know, you wanna dance, you know?
+
+Cordelia: With you?
+
+Jesse: Well, uh, yeah.
+
+Cordelia: Well, uh, no! C'mon, guys.
+
+She and her friends leave. Jesse is left in the dust.
+
+Jesse: Fine! Plenty of other fish in the sea. Oh, yeah, I'm... on the
+prowl. Witness me prowling!
+
+Cut to Buffy and Giles on the upper level.
+
+Buffy: I didn't say I'd never slay another vampire. It's not like I
+have all these fluffy bunny feelings for them, I'm just not gonna get
+way extracurricular with it. You know, if I see one, sure I'll...
+
+Giles: (interrupting) Will you be ready? There's so much you don't know
+about them, about your own powers. A vampire appears to be completely
+normal until the feed is upon them, only then do they reveal their true
+demonic visage.
+
+Buffy: You're like a textbook with arms, I know this.
+
+Giles: The point is, a Slayer should be able to see them anyway.
+Without looking, without thinking. Can you tell me if there's a vampire
+in this building?
+
+Buffy: Maybe...
+
+Giles: You should know. Even through this mass and this... din, you
+should be able to sense them. Well, try! Reach out with your mind.
+(Buffy looks around) You have to hone your senses, focus until the
+energy washes over you, until you, you feel every particle o-of...
+
+Buffy: There's one.
+
+Giles: W-where?
+
+Buffy: Right there, talking to that girl.
+
+Giles: You don't know...
+
+Buffy: Oh, please! Look at his jacket. He's got the sleeves rolled up,
+and the shirt! Deal with that outfit for a moment.
+
+Giles: It's dated?
+
+Buffy: It's carbon dated. Trust me, only someone living underground for
+ten years would think that was still the look.
+
+Giles: But you didn't... hone.
+
+Buffy: (notices that the girl is Willow) Oh, no.
+
+Giles: Isn't that...
+
+Buffy: Willow.
+
+Giles: What's she doing?
+
+Buffy: Seizing the moment!
+
+She starts down to rescue Willow.
+
+Lyrics: We're formed in liquid / Pushed out still dripping / A world
+was thrown before my eyes
+
+Cut to below. Willow is being led out of the Bronze by the vampire. Cut
+to Giles. He's at a loss for what to do.
+
+Lyrics: Now paint a picture / Crayon stick figures / With blue-haired
+people, purple skies
+
+Cut to below. Buffy has lost them. She tries the back. She breaks a leg
+off of a stack of chairs and begins to stalk. After a while Cordelia
+comes out of the restroom and surprises her. Buffy reacts, taking
+Cordelia by the throat and pushing her up against a wall.
+
+Buffy: (recognizing) Cordelia! (she lets go)
+
+Cordelia: God! What is your childhood trauma?!
+
+Her entourage appears in the restroom door behind her.
+
+Buffy: Have you guys seen Willow? Did she come by here?
+
+Cordelia: Why? Do you need to attack her with the stick? Jeez!
+
+Buffy turns and goes.
+
+Cordelia: (to her groupies) Excuse me, I have to call *everyone* I have
+*ever* met, right now.
+
+Cut to the main floor. Giles catches up with Buffy.
+
+Giles: That *was* quick. Well done! I-I need to go to the library. This
+Harvest thing...
+
+Buffy: I didn't find them!
+
+He grabs Buffy by the arm and turns her to face him.
+
+Giles: The vampire is not dead?
+
+Buffy: No, but my social life is on the critical list.
+
+Giles: (lets go of her) So, what do we do?
+
+Buffy: I'll take care of it!
+
+Giles: I-I-I need to come with you, yes?
+
+Buffy: Don't worry. One vampire I can handle.
+
+She leaves, walking past Jesse talking to Darla.
+
+Jesse: So, um, what did you say your name was?
+
+Darla: Darla.
+
+Jesse: Darla. You know, I haven't seen you around before. Are you from
+around here?
+
+Darla: No, but I have family here.
+
+Jesse: Have I met them?
+
+Darla: You probably will.
+
+Cut to the Master's lair. The Master rises out of the pool of blood as
+Luke kneels and looks on. He steps out of the pool over to Luke and
+offers his hand. Luke takes it.
+
+Luke: Master!
+
+ ~~~~~~~~~~ Part 4 ~~~~~~~~~~
+
+In the Master's lair.
+
+Master: I am weak.
+
+Luke: (quotes scripture) 'In the Harvest he will be restored.'
+
+Master: The Harvest.
+
+Luke: We're almost there. Soon you'll be free!
+
+The Master reaches his arm out to test his mystical confines. They are
+still as strong as ever.
+
+Master: I must be ready. I need my strength.
+
+Luke: I've sent your servants to bring you some food.
+
+Master: Good. Luke?
+
+Luke: Yes?
+
+Master: Bring me something... young.
+
+Cut to the sidewalk next to the cemetery. Willow and Thomas are walking.
+
+Willow: Sure is dark.
+
+Thomas: It's night.
+
+Willow: Well, that's a dark time, night. Traditionally. I still can't
+believe I've never seen you at school. Do you have Mr. Chomsky for
+history?
+
+Thomas ignores her babbling and heads into the cemetery.
+
+Willow: Uh, the ice cream bar is this way. It's past Hamilton Street?
+
+Thomas: I know a shortcut.
+
+He grabs her hand and leads her into the cemetery.
+
+Cut to outside the Bronze. Buffy is trying to find Willow.
+
+Xander: Hey, you're leaving already?
+
+Buffy: Oh, Xander! Have you seen Willow?
+
+Xander: Not tonight, no.
+
+Buffy: She left with a guy.
+
+Xander: We're talking about Willow, right? Scorin' at the Bronze, work
+it girl...
+
+Buffy: (interrupts) No, I need to find her. Where would he take her?
+
+Xander: Why? Oh, hey, I hope he's not a vampire, because then you might
+have to slay him.
+
+Buffy: (taken aback) Was there a... a school bulletin? Was it i-in the
+newspaper? Is there anyone in this town who doesn't know I'm the Slayer?
+
+Xander: No. I only know that you *think* that you're the Slayer, and
+the reason why I know that...
+
+Buffy: (interrupts) Well, whatever, it doesn't matter, just tell me,
+where would Willow go?
+
+Xander: You're serious!
+
+Buffy: We don't find her and there's gonna be one more dead body in the
+morning!
+
+Cut to the cemetery. Willow and Thomas are walking.
+
+Willow: Oh, okay, th-this is nice... and scary. Are you sure this is
+faster?
+
+They reach the mausoleum.
+
+Thomas: Hey! Ever been in one of these?
+
+Willow: No. Thank you. (turns away)
+
+Thomas: Come on. (comes up behind her and pulls her hair back) What are
+you afraid of?
+
+He moves in toward her neck. She lets out a yelp as he grabs her and
+pushes her into the mausoleum. Cut to inside the mausoleum. Willow trips
+down the stairs and stops up against the stone coffin. She turns around.
+
+Willow: That wasn't funny!
+
+Thomas comes down the steps. She backs away from him, against a wall.
+She trips over some stones.
+
+Willow: I think I'm gonna go.
+
+Thomas: Is that what you think?
+
+He comes toward her again. She skirts by him, but only because he lets
+her. Darla blocks her way out of the mausoleum.
+
+Darla: Is this the best you could do?
+
+Thomas: She's fresh!
+
+Darla: Hardly enough to share.
+
+Thomas: Why didn't you bring your own?
+
+Darla: (gives him a look) I did.
+
+Jesse stumbles into the mausoleum, holding his neck.
+
+Jesse: Hey! Wait up!
+
+Willow: Oh, my God, Jesse!
+
+He is weak from blood loss and collapses. Willow tries to catch him and
+breaks his fall.
+
+Jesse: Y'know, you gave me a hickey.
+
+Thomas gives Darla a look.
+
+Darla: (shrugs) I got hungry on the way.
+
+Willow: Jesse, let's get outta here!
+
+Darla: Oh, you're not going anywhere.
+
+Willow: (confronts her) Leave us alone!
+
+Darla: You're not going anywhere until we've (vamps out) *fed*!
+
+Willow screams and falls back down next to Jesse. Buffy and Xander show
+up.
+
+Buffy: Well, this is nice. I-it's a little bare, but a dash of paint, a
+few throw pillows... call it home!
+
+Buffy moves behind the coffin to draw the vampires away from the others.
+
+Darla: Who the hell are you?
+
+Buffy: You mean there's actually someone in this town who doesn't know
+already? Whew, that's a relief, I'm telling you! Having a secret
+identity in this town is a job of work.
+
+Xander: Buffy, we bail now, right?
+
+Thomas: Not yet!
+
+Buffy: Okay, first of all, what's with the outfit? Live in the now,
+okay? You look like DeBarge!
+
+The vampires close in on her. She turns to Darla.
+
+Buffy: Now, we can do this the hard way, or... well, actually there's
+just the hard way.
+
+Darla: That's fine with me!
+
+Buffy: Are you sure? Now, this in not gonna be pretty. We're talking
+violence, strong language, adult content...
+
+Thomas roars behind Buffy. She pulls the chair leg out from inside her
+shirt. He attacks from behind, but Buffy neatly jams the makeshift stake
+into his chest. He falls back and turns to ashes. Darla can't believe
+her eyes. Neither can anyone else.
+
+Buffy: See what happens when you roughhouse?
+
+Darla: He was young and stupid!
+
+Buffy: Xander, go!
+
+Darla: Don't go far!
+
+Buffy and Darla start to fight. Darla punches high, but Buffy blocks.
+Xander helps Willow pick up Jesse. Darla throws a backhand punch, but
+Buffy blocks again and follows up with a front snap kick to Darla's
+stomach. As she leans forward from the pain, Buffy slams her elbow into
+Darla's back. Cut to outside. Xander and Willow help Jesse out and they
+start to run. Cut to the mausoleum. Darla hits the wall and falls to the
+floor, winded.
+
+Buffy: You know, I just wanted to start over. Be like everybody else.
+Have some friends, y'know, maybe a dog... But, no, you had to come here,
+you couldn't go suck on some other town.
+
+Darla: Who are you?
+
+Buffy: Don't you know?
+
+Luke grabs her by the neck from behind.
+
+Luke: I don't care!
+
+He throws her across the room. He grabs Darla and lifts her to her feet.
+
+Luke: You were supposed to be bringing an offering for the Master!
+We're almost at Harvest, and you dally with this child!
+
+Darla: (fearfully) We had someone, but then she came. She killed
+Thomas. Luke, she's strong.
+
+Luke: You go. I'll see if I can handle the little girl.
+
+He approaches Buffy as she starts to get up, still a little dazed. Darla
+quickly climbs the steps, looks back once and runs out of the door. Luke
+attacks Buffy with a double punch, but she blocks it and delivers a
+punch to his gut and a hopping front snap kick to his jaw. He steps
+back, but isn't fazed.
+
+Luke: You're strong.
+
+He lands a solid backhand fist on her. She goes flying.
+
+Luke: I'm stronger!
+
+Cut to outside in the cemetery. Xander and Willow are supporting Jesse
+as they run.
+
+Willow: We'll get the police, it's just a few blocks up!
+
+They are stopped by a group of vampires. Cut to the mausoleum.
+
+Luke: You're wasting my time.
+
+She backs away up the stairs toward the exit.
+
+Buffy: Hey, I had other plans, too, okay?
+
+Luke shoves the heavy lid off of the coffin. Buffy does a cartwheel onto
+and over it to avoid it and kicks Luke in the chest with both feet,
+knocking him down. She grabs the stake from the floor and lunges at
+Luke, but he is too quick for her, and grabs her by the wrist.
+
+Luke: You think you can stop me? Stop us?
+
+He grabs the stake with his other hand and breaks it. Then he grabs her
+by the shirt.
+
+Luke: You have no idea what you're dealing with.
+
+He throws Buffy onto the rim of the now open coffin. She rolls off onto
+the floor, dazed. Luke gets up and starts toward her, quoting scripture.
+
+Luke: 'And like a plague of boils, the race of man covered the Earth.'
+
+Cut to the library. Giles is paging through an old volume and stops on a
+picture of Satan with lightning coming from his hand to a man's.
+
+Luke: 'But on the third day of the newest light would come the Harvest.
+And the blood of men will flow as wine.'
+
+Cut to the Master sitting in an intricately carved chair.
+
+Luke: 'When the Master will walk among them once more!'
+
+Cut to Xander, Willow and Jesse surrounded by vampires, including Darla.
+
+Luke: 'The Earth will belong to the old ones.'
+
+Cut to Buffy. Luke is in her face.
+
+Luke: 'And Hell itself will come to town.'
+
+He grabs Buffy and growls. He lifts her by the throat and throws her
+toward the coffin. Buffy flips over in a front layout and lands in the
+coffin next to a skeleton, and lets out a quick scream, but then remains
+silent, only breathing. She can't see or hear Luke. She slowly starts to
+get up. Suddenly Luke jumps up and into the coffin.
+
+Luke: (smiling widely) Amen!
+
+He moves in to bite Buffy.
+
+To Be Continued...
View
48 admin/callbacks/cb_ep.php
@@ -0,0 +1,48 @@
+<?php
+// Callback for InPlaceEditor.
+require('../includes/admin-setup.php');
+if( !( isset($_POST['season'], $_POST['ep_num'], $_POST['line_num']) && ( isset($_POST['speaker']) || isset($_POST['new_line_text']) ) ) ){
+ // Always need season, ep_num, line_num but then can either update speaker or new_line_text (or both)
+ die('ep_cb.php: Incorrect parameters.');
+}
+$season = mysql_real_escape_string($_POST['season']);
+$ep_num = mysql_real_escape_string($_POST['ep_num']);
+$line_num = mysql_real_escape_string($_POST['line_num']);
+$new_line_text = mysql_real_escape_string(htmlentities($_POST['new_line_text'], ENT_QUOTES));
+
+function myurlencode($str){
+ $allowed_chars = "A-Za-z0-9 "; // note the space!
+ $one = preg_replace("/[^{$allowed_chars}]/", '', $str);
+ $two = str_replace(' ', '+', $one);
+ return mysql_real_escape_string($two);
+}
+
+function unescape($str){
+ return str_replace("\\", '', $str);
+}
+
+if( isset($_POST['new']) ){
+ // Add a new line. Pass in ep_cb.php?new&line_num=43
+ // and this line will be the new line 43
+ if( ! isset($_POST['speaker']) ){
+ die('New line, but no speaker provided.');
+ }
+ $speaker = mysql_real_escape_string($_POST['speaker']);
+ mysql_query('UPDATE transcript SET line_num=line_num+1 WHERE line_num >= ' . $line_num);
+ mysql_query(sprintf('INSERT INTO transcript (season, ep_num, speaker, stripname, line, line_num) ' .
+ 'VALUES (%d, %d, \'%s\', \'%s\', \'%s\', %d)',
+ $season, $ep_num, $speaker, myurlencode($speaker), $new_line_text, $line_num));
+} else {
+ /* single EXISTING line */
+ if( isset($_POST['new_line_text']) ) {
+ mysql_query(sprintf('UPDATE transcript SET line=\'%s\' WHERE line_num=%d AND season=%d AND ep_num=%d',
+ $new_line_text, $line_num, $season, $ep_num));
+ print unescape($new_line_text);
+ } elseif( isset($_POST['speaker']) ) {
+ mysql_query(sprintf('UPDATE transcript SET speaker=\'%s\',stripname=\'%s\' WHERE line_num=%d AND season=%d AND ep_num=%d',
+ $speaker, myurlencode($speaker), $line_num, $season, $ep_num));
+ print unescape($speaker);
+ }
+}
+
+?>
View
42 admin/callbacks/cb_get_all_quotes.php
@@ -0,0 +1,42 @@
+<?php
+header('Content-Type: application/json');
+require(dirname(__FILE__) . '/../includes/admin-setup.php');
+if( ! function_exists('json_encode') ){
+ require(ADMIN_INC_PATH . '/php-json/json.php');
+ $json = new Services_JSON();
+ function json_encode($obj){
+ return $json->encode($obj);
+ }
+}
+
+$season = mysql_real_escape_string($_GET['season']);
+$ep_num = mysql_real_escape_string($_GET['ep_num']);
+
+// $result is automatically sorted like q1, q2, ..., q10
+$result = mysql_query(sprintf('SELECT line_num, quote FROM transcript WHERE season=%d AND ep_num=%d AND quote IS NOT NULL', $season, $ep_num));
+$line_nums = array();
+$anchorsToLines = array();
+while( $row = mysql_fetch_assoc($result) ){
+ $num = $row['line_num'];
+ $anchor = explode(',', $row['quote']);
+ foreach($anchor as $a){
+ if( array_key_exists($a, $line_nums)){
+ array_push($line_nums[$a], "l{$num}");
+ } else {
+ $line_nums[$a] = array("l{$num}");
+ }
+ }
+}
+
+function minmax($arr){
+ return array(min($arr), max($arr));
+}
+
+$line_nums = array_map('minmax', $line_nums);
+uksort($line_nums, 'strnatcmp');
+foreach(array_keys($line_nums) as $k){
+ $arr = $line_nums[$k];
+ $anchorToLines[$k] = array($arr[0], $arr[1]);
+}
+print json_encode($anchorToLines);
+?>
View
86 admin/callbacks/cb_quote-jquery.php
@@ -0,0 +1,86 @@
+<?php
+require('../includes/admin-setup.php'); // Houston, we have a $link.
+if( ! ( isset($_POST['season'], $_POST['ep_num']) && (isset($_POST['add']) || isset($_POST['remove'])) ) ){
+ print 'incorrect parameters';
+ die();
+}
+$season = mysql_real_escape_string($_POST['season']);
+$ep_num = mysql_real_escape_string($_POST['ep_num']);
+$add = array();
+$remove = array();
+if( isset($_POST['add']) ){
+ $add = array_map('mysql_real_escape_string', $_POST['add']);
+}
+if( isset($_POST['remove']) ){
+ $remove = array_map('mysql_real_escape_string', $_POST['remove']);
+}
+
+/* we can't just SET quote to anything as long is it isn't NULL;
+ * we need to keep grouping so quote will be comma-separated like q3,q9.
+ * Note that q9 should come right after q3, so go by the first number then do each comma-separated value after it,
+ * then go to the next line
+ * so for (q3,q9,q16) we'd do:
+ * q3
+ * q9
+ * q16
+ * q4 <-- return to normal order
+ * TODO: in quote.php, DO IT BY LINE, not by quote number, i.e.
+ * get all lines with quote field set and go down them, grouping as you go.
+ * Check off used quote anchors in an array.
+ */
+
+/** ADD **/
+foreach($add as $idStr){
+ list($anchor, $start, $end) = explode(' ', $idStr);
+ $start = substr($start, 1); // strip off leading 'l'
+ $end = substr($end, 1);
+ // CONCAT_WS(<separator>, str1, str2,...strN) concatenates using <separator>
+ $addQuery = sprintf("UPDATE transcript SET quote=CONCAT_WS(',', quote,'%s') WHERE season=%d AND ep_num=%d AND line_num BETWEEN %d AND %d",
+ mysql_real_escape_string($anchor),
+ $season,
+ $ep_num,
+ mysql_real_escape_string($start),
+ mysql_real_escape_string($end));
+ //print "addQuery: $addQuery\n";
+ $addResult = mysql_query($addQuery);
+ if(!$addResult){
+ print "failed: $removeQuery";
+ }
+}
+
+/** REMOVE **/
+foreach($remove as $anchor){
+ $quote_result = mysql_query(sprintf("SELECT quote FROM transcript WHERE season=%d AND ep_num=%d AND FIND_IN_SET('%s',quote)",
+ $season, $ep_num, $anchor));
+ // $oldToNew is an array with a mapping of old keys -> new keys.
+ // Obviously since we are removing e.g. 'q17', if a row's quote field
+ // is just 'q17', set that to NULL.
+ $oldToNew = array($anchor => 'NULL');
+ while($row = mysql_fetch_assoc($quote_result)){
+ $oldQuoteStr = $row['quote'];
+ if( array_key_exists($oldQuoteStr, $oldToNew) ){
+ continue;
+ }
+ $newQuoteArr = array_flip(explode(',', $oldQuoteStr));
+ unset($newQuoteArr[$anchor]);
+ if( count($newQuoteArr) === 0){
+ // If it's 0, then it just contains the anchor we're removing
+ // and should have been continue'd above.
+ print "uh-oh\n";
+ print_r($newQuoteArr);
+ }
+ $newQuoteStr = "'" . implode(',', array_keys($newQuoteArr)) . "'" ;
+ $oldToNew[$oldQuoteStr] = $newQuoteStr;
+ }
+ foreach($oldToNew as $old => $new){
+ $removeQuery = sprintf("UPDATE transcript SET quote=%s WHERE quote='%s' AND season=%d AND ep_num=%d",
+ $new, $old, $season, $ep_num);
+ //print "removeQuery: $removeQuery\n";
+ $removeResult = mysql_query($removeQuery);
+ if(!$removeResult){
+ print "failed: $removeQuery";
+ }
+ }
+}
+print "success";
+?>
View
86 admin/callbacks/cb_quote.php
@@ -0,0 +1,86 @@
+<?php
+require('../includes/admin-setup.php'); // Houston, we have a $link.
+if( ! ( isset($_POST['season'], $_POST['ep_num']) && (isset($_POST['add']) || isset($_POST['remove'])) ) ){
+ print 'incorrect parameters';
+ die();
+}
+$season = mysql_real_escape_string($_POST['season']);
+$ep_num = mysql_real_escape_string($_POST['ep_num']);
+$add = array();
+$remove = array();
+if( isset($_POST['add']) ){
+ $add = array_map('mysql_real_escape_string', $_POST['add']);
+}
+if( isset($_POST['remove']) ){
+ $remove = array_map('mysql_real_escape_string', $_POST['remove']);
+}
+
+/* we can't just SET quote to anything as long is it isn't NULL;
+ * we need to keep grouping so quote will be comma-separated like q3,q9.
+ * Note that q9 should come right after q3, so go by the first number then do each comma-separated value after it,
+ * then go to the next line
+ * so for (q3,q9,q16) we'd do:
+ * q3
+ * q9
+ * q16
+ * q4 <-- return to normal order
+ * TODO: in quote.php, DO IT BY LINE, not by quote number, i.e.
+ * get all lines with quote field set and go down them, grouping as you go.
+ * Check off used quote anchors in an array.
+ */
+
+/** ADD **/
+foreach($add as $idStr){
+ list($anchor, $start, $end) = explode('+', $idStr);
+ $start = substr($start, 1); // strip off leading 'l'
+ $end = substr($end, 1);
+ // CONCAT_WS(<separator>, str1, str2,...strN) concatenates using <separator>
+ $addQuery = sprintf("UPDATE transcript SET quote=CONCAT_WS(',', quote,'%s') WHERE season=%d AND ep_num=%d AND line_num BETWEEN %d AND %d",
+ mysql_real_escape_string($anchor),
+ $season,
+ $ep_num,
+ mysql_real_escape_string($start),
+ mysql_real_escape_string($end));
+ //print "addQuery: $addQuery\n";
+ $addResult = mysql_query($addQuery);
+ if(!$addResult){
+ print "failed: $removeQuery";
+ }
+}
+
+/** REMOVE **/
+foreach($remove as $anchor){
+ $quote_result = mysql_query(sprintf("SELECT quote FROM transcript WHERE season=%d AND ep_num=%d AND FIND_IN_SET('%s',quote)",
+ $season, $ep_num, $anchor));
+ // $oldToNew is an array with a mapping of old keys -> new keys.
+ // Obviously since we are removing e.g. 'q17', if a row's quote field
+ // is just 'q17', set that to NULL.
+ $oldToNew = array($anchor => 'NULL');
+ while($row = mysql_fetch_assoc($quote_result)){
+ $oldQuoteStr = $row['quote'];
+ if( array_key_exists($oldQuoteStr, $oldToNew) ){
+ continue;
+ }
+ $newQuoteArr = array_flip(explode(',', $oldQuoteStr));
+ unset($newQuoteArr[$anchor]);
+ if( count($newQuoteArr) === 0){
+ // If it's 0, then it just contains the anchor we're removing
+ // and should have been continue'd above.
+ print "uh-oh\n";
+ print_r($newQuoteArr);
+ }
+ $newQuoteStr = "'" . implode(',', array_keys($newQuoteArr)) . "'" ;
+ $oldToNew[$oldQuoteStr] = $newQuoteStr;
+ }
+ foreach($oldToNew as $old => $new){
+ $removeQuery = sprintf("UPDATE transcript SET quote=%s WHERE quote='%s' AND season=%d AND ep_num=%d",
+ $new, $old, $season, $ep_num);
+ //print "removeQuery: $removeQuery\n";
+ $removeResult = mysql_query($removeQuery);
+ if(!$removeResult){
+ print "failed: $removeQuery";
+ }
+ }
+}
+print "success";
+?>
View
76 admin/css/Copy of edit.css
@@ -0,0 +1,76 @@
+div.line.highlight { /* be specific */
+ /*background-color: #FFFFDD; /* light yellow */
+ background-color: #FFFF9C; /* deep yellow */
+}
+
+#lipsum {
+ margin-left: 30px; /* perfectly inside div#content */
+}
+
+.line {
+ /* pull it to the left to make the box big enough for the bg image...*/
+ margin-left: -30px;
+ /* ..then push it back to the right.*/
+ padding-left: 30px;
+ /* padding makes room for box, margin pushes out box to include padding */
+ padding-bottom: 5px;
+ margin-bottom: 5px;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+}
+
+.line.offedit, .line.refedit, .line.quoteedit {
+ cursor: pointer;
+ cursor: hand;
+}
+
+.line.offedit { background-image: url("../testing/img/offedit.png"); }
+.line.refedit { background-image: url("../testing/img/refedit.png"); }
+.line.quoteedit { background-image: url("../testing/img/quoteedit.png"); }
+
+/* links to switch mode */
+#switch_quote a.box, #switch_ref a.box {
+ margin-bottom: 5px;
+ display: block;
+ width: 100px;
+ height: 36px;
+}
+
+#switch_quote, #switch_ref {
+ background: transparent url(../img/add2.png) no-repeat 0 10px;
+ padding-left: 16px; /* 16x16 */
+}
+
+#switch_quote a.box {
+ /*background: transparent url(../img/addquote.png) no-repeat top left;*/
+ width: 36px;
+ height: 40px;
+ background: transparent url(../img/qbox.png) no-repeat top left;
+}
+
+#switch_ref a.box {
+ width: 36px;
+ height: 40px;
+ background: transparent url(../img/rbox.png) no-repeat top left;
+}
+
+/* box displaying which mode we're in */
+#modebox {
+ /* box showing which mode we're in */
+ position: fixed;
+ top: 150px; /* height of logo */
+ left: 20px;
+}
+
+#quote_mode, #ref_mode {
+ padding: 10px;
+ display: none;
+}
+
+#modebox #quote_mode {
+ background-color: #ADD8E6; /* lightblue */
+}
+#modebox #ref_mode {
+ background-color: #FFC0CB; /* pink */
+}
View
84 admin/css/admin.css
@@ -0,0 +1,84 @@
+body {
+ margin: 0;
+ padding: 0;
+}
+
+
+div#all {
+ width: 600px;
+ height: 100%;
+ margin-left: 200px; /* move away from #logo */
+ margin-top: 20px;
+}
+
+div#logo {
+ width: 200px;
+ height: 150px;
+ background: transparent url(cssimg/admin.png) no-repeat scroll top left;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+
+ul#tabs {
+ float: left;
+ border-bottom: 3px solid black;
+ width: 100%;
+ margin: 0;
+}
+
+ul#tabs li {
+ list-style: none;
+ float: left;
+ border-style: solid;
+ border-color: black;
+ border-width: 1px 1px 0 1px;
+ background-color: lightblue;
+ margin: 0 5px;
+ padding: 2px 8px;
+}
+
+ul#tabs li.selected {
+ background-color: pink;
+}
+
+div#content {
+ float: left;
+ clear: left;
+ width: 100%;
+}
+
+div#text {
+ /* stuff after the h2 */
+ margin-left: 10px;
+}
+
+h1 { text-align: center; }
+h2 { text-align: center; }
+
+/*
+label {
+ float: left;
+ display: block;
+ margin-right: 5px;
+}
+*/
+
+/* For the little "this is required" text in a form. */
+.required {
+ color: red;
+ font-size: 90%;
+}
+
+/* A neat little info box */
+.info {
+ width: 350px;
+ text-align: center;
+ border: 1px solid black;
+ background-color: #FFFFCC;
+ padding: 5px;
+ margin: 10px 25%;
+}
+
+
View
BIN  admin/css/cssimg/admin.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  admin/css/cssimg/offedit.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  admin/css/cssimg/quoteedit.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
BIN  admin/css/cssimg/refedit.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
40 admin/css/edit.css
@@ -0,0 +1,40 @@
+#content {
+ margin-left: 30px; /* line boxes are perfectly inside div#content */
+}
+
+.line {
+ /* pull it to the left to make the box big enough for the bg image...*/
+ margin-left: -30px;
+ /* ..then push it back to the right.*/
+ padding-left: 30px;
+ padding-bottom: 5px;
+ margin-bottom: 5px;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: 0 0;
+
+ cursor: pointer;
+ cursor: hand;
+}
+
+.offedit { background-image: url(../img/offedit.png); }
+
+#content .highlight {
+ background-color: #FFFF9C; /* deep yellow */
+}
+
+#content .overlap {
+ background-color: #C9A0DC !important; /* lavender (or 'wisteria') */
+}
+
+#content div.selected {/*specific so .selected doesn't interfere with the tabs*/
+ background-image: url(../img/quoteedit.png);
+ background-color: #FFFF9C; /* deep yellow */
+}
+
+#modebox {
+ /* box showing which mode we're in */
+ position: fixed;
+ top: 150px; /* height of logo */
+ left: 20px;
+}
View
95 admin/css/modalbox.css
@@ -0,0 +1,95 @@
+#MB_overlay {
+ position: absolute;
+ margin: auto;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ z-index: 9999;
+ background-color: #000!important;
+}
+#MB_overlay[id] { position: fixed; }
+
+#MB_window {
+ position: absolute;
+ top: 0;
+ border: 0 solid;
+ text-align: left;
+ z-index: 10000;
+}
+#MB_window[id] { position: fixed!important; }
+
+#MB_frame {
+ position: relative;
+ background-color: #EFEFEF;
+ height: 100%;
+}
+
+#MB_header {
+ margin: 0;
+ padding: 0;
+}
+
+#MB_content {
+ padding: 6px .75em;
+ overflow: auto;
+}
+
+#MB_caption {
+ font: bold 100% "Lucida Grande", Arial, sans-serif;
+ text-shadow: #FFF 0 1px 0;
+ padding: .5em 2em .5em .75em;
+ margin: 0;
+ text-align: left;
+}
+
+#MB_close {
+ display: block;
+ position: absolute;
+ right: 5px; top: 4px;
+ padding: 2px 3px;
+ font-weight: bold;
+ text-decoration: none;
+ font-size: 13px;
+}
+#MB_close:hover {
+ background: transparent;
+}
+
+#MB_loading {
+ padding: 1.5em;
+ text-indent: -10000px;
+ background: transparent url(spinner.gif) 50% 0 no-repeat;
+}
+
+/* Color scheme */
+#MB_frame {
+ padding-bottom: 7px;
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+}
+#MB_window {
+ background-color: #EFEFEF;
+ color: #000;
+ -webkit-box-shadow: 0 8px 64px #000;
+ -moz-box-shadow: 0 0 64px #000;
+ box-shadow: 0 0 64px #000;
+
+ -webkit-border-radius: 7px;
+ -moz-border-radius: 7px;
+ border-radius: 7px;
+}
+#MB_content { border-top: 1px solid #F9F9F9; }
+#MB_header {
+ background-color: #DDD;
+ border-bottom: 1px solid #CCC;
+}
+#MB_caption { color: #000 }
+#MB_close { color: #777 }
+#MB_close:hover { color: #000 }
+
+
+/* Alert message */
+.MB_alert {
+ margin: 10px 0;
+ text-align: center;
+}
View
BIN  admin/css/spinner.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
10 admin/edit-ref.php
@@ -0,0 +1,10 @@
+<?php
+$tab = 'edit';
+$action = 'edit-ref';
+if( $editing_specific_episode ){
+ $ep_printer->print_out();
+} else {
+ echo '<h1>Select Episode</h1>';
+ print_episode_list();
+}
+?>
View
35 admin/edit.php
@@ -0,0 +1,35 @@
+<?php
+$totaleps = mysql_result(mysql_query('SELECT COUNT(*) FROM episode'), 0);
+$totalseasons = mysql_result(mysql_query('SELECT COUNT(DISTINCT season) FROM episode'), 0);
+$totalquotes = mysql_result(mysql_query('SELECT COUNT(DISTINCT quote,season,ep_num) FROM transcript WHERE quote IS NOT NULL'), 0);
+$totalrefs = mysql_result(mysql_query('SELECT COUNT(DISTINCT ref,season,ep_num) FROM transcript WHERE ref IS NOT NULL'), 0);
+$totalactors = mysql_result(mysql_query('SELECT COUNT(name) FROM cast'), 0);
+function pluralize($str, $dep){
+ return $dep > 1 ? $str . 's' : $str;
+}
+$episodeStr = pluralize('episode', $totaleps);
+$seasonStr = pluralize('season', $totalseasons);
+$quoteStr = pluralize('quote', $totalquotes);
+$actorStr = pluralize('actor', $totalactors);
+$referenceStr = pluralize('reference', $totalrefs);
+?>
+<h2>Edit</h2>
+<div id="text">
+<?php
+printf('<p><a href="episode.php">Episodes</a> (%d %s in %d %s)</p>'."\n",
+ $totaleps,
+ $episodeStr,
+ $totalseasons,
+ $seasonStr);
+printf('<p><a href="edit-quote.php">Quotes</a> (%d %s total)</p>'."\n",
+ $totalquotes,
+ $quoteStr);
+printf('<p><a href="edit-ref.php">References</a> (%d %s total)</p>'."\n",
+ $totalrefs,
+ $referenceStr);
+printf('<p><a href="cast.php">Cast</a> (%d %s total)</p>'."\n",
+ $totalactors,
+ $actorStr);
+printf('<p><a href="character.php">Characters</a> (??? characters total)</p>'."\n");
+printf('<p><a href="seriesinfo.php">Series Info</a> (series creator, premier date, run time)</p>'."\n");
+?>
View
51 admin/episode-add.php
@@ -0,0 +1,51 @@
+<?php
+/* add episode */
+if( ! empty($_POST) ){
+} else {
+?>
+<h1>Add Episode</h1>
+<form action="episode-add.php" method="post">
+<label for="season">Season (<span class="required">required</span>):</label>
+<br/><input type="text" id="season" />
+<br/><label for="ep_num">Episode Number (<span class="required">required</span>):</label>
+<br/><input type="text" id="ep_num" />
+<div class="info">Everything below here is optional. You can always edit this episode's information later.</div>
+<br/><label for="title">Episode Title:</label>
+<br/><input type="text" id="title" />
+<br/><label for="air_date">Air Date (like "10/28/08"):</label>
+<br/><input type="text" id="air_date" />
+<br/><label for="producer">Producer(s):</label>
+<br/><input type="text" id="producer" />
+<br/><label for="writer">Writer(s):</label>
+<br/><input type="text" id="writer" />
+<br /><label for="network">Network (e.g. CBS):<label>
+<br/><input type="text" id="network" />
+
+<h2>Transcript</h2>
+<h4>
+Simply type the transcript into the box below. Each line should be of the form:
+<br/>
+Character_name: dialogue.
+<br/>
+You shouldn't put quote marks around the dialogue.
+</h4>
+<h5>
+There are some special bits:
+<br/>
+Use "[Q]" to create quotes. Put a "[Q]" on its own line before and after a quote, e.g.:
+<br/>
+<p>
+[Q]
+<br/>
+Character: Witty remark.
+<br/>
+Character: Quotable retort!
+<br/>
+[Q]
+</p>
+Type a "===" on its own line to mark the beginning of a new scene.