- Page 1:
THE EXPERT’S VOICE ® IN OPEN SOU
- Page 4 and 5:
ii Pro PHP and jQuery Copyright ©
- Page 6 and 7:
iv Contents at a Glance ■About th
- Page 8 and 9:
vi ■ CONTENTS Understanding jQuer
- Page 10 and 11:
viii ■ CONTENTS Summary .........
- Page 12 and 13:
x ■ CONTENTS ■Chapter 9: Perfor
- Page 14 and 15:
xii About the Author ■ Jason Leng
- Page 16 and 17:
xiv Acknowledgments I feel like I s
- Page 19 and 20:
C H A P T E R 1 ■ ■ ■ Introdu
- Page 21 and 22:
CHAPTER 1 ■ INTRODUCING JQUERY Th
- Page 23 and 24:
SETTING UP A LOCAL TESTING ENVIRONM
- Page 25 and 26:
google.load("jquery", "1.4.2");
- Page 27 and 28:
Basic Selectors CHAPTER 1 ■ INTRO
- Page 29 and 30:
Only one paragraph in our document
- Page 31 and 32:
$(".foo+p"); CHAPTER 1 ■ INTRODUC
- Page 33 and 34:
$("p:odd"); [ p.foo, p#bar ] Select
- Page 35 and 36:
$("p:parent"); [ p, p.foo, p, p#bar
- Page 37 and 38:
which returns the following in the
- Page 39:
Selecting Only Enabled or Disabled
- Page 42 and 43:
26 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 44 and 45:
28 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 46 and 47:
30 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 48 and 49:
32 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 50 and 51:
34 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 52 and 53:
36 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 54 and 55:
38 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 56 and 57:
40 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 58 and 59:
42 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 60 and 61:
44 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 62 and 63:
46 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 64 and 65:
48 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 66 and 67:
50 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 68 and 69:
52 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 70 and 71:
54 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 72 and 73:
56 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 74 and 75:
58 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 76 and 77:
60 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 78 and 79:
62 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 80 and 81:
64 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 82 and 83:
66 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 84 and 85:
68 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 86 and 87:
70 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 88 and 89:
72 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 90 and 91:
74 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 92 and 93:
76 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 94 and 95:
78 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 96 and 97:
80 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 98 and 99:
82 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 100 and 101:
84 CHAPTER 2 ■ COMMON JQUERY ACTI
- Page 103 and 104: C H A P T E R 3 ■ ■ ■ Object-
- Page 105 and 106: $obj = new MyClass; var_dump($obj);
- Page 107 and 108: CHAPTER 3 ■ OBJECT-ORIENTED PROGR
- Page 109 and 110: CHAPTER 3 ■ OBJECT-ORIENTED PROGR
- Page 111 and 112: $obj = new MyClass; // Get the valu
- Page 113 and 114: } public function setProperty($newv
- Page 115 and 116: CHAPTER 3 ■ OBJECT-ORIENTED PROGR
- Page 117 and 118: } } return $this->getProperty(); pu
- Page 119 and 120: Create a new object $newobj = new M
- Page 121 and 122: } } // Create a new object $newobj
- Page 123 and 124: Private Properties and Methods CHAP
- Page 125 and 126: } public function __construct() { e
- Page 127 and 128: */ CHAPTER 3 ■ OBJECT-ORIENTED PR
- Page 129 and 130: Ease of Implementation CHAPTER 3
- Page 131 and 132: CHAPTER 3 ■ OBJECT-ORIENTED PROGR
- Page 133 and 134: CHAPTER 3 ■ OBJECT-ORIENTED PROGR
- Page 135 and 136: C H A P T E R 4 ■ ■ ■ Build a
- Page 137 and 138: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 139 and 140: # # DocumentRoot: The directory out
- Page 141 and 142: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 143 and 144: } ?> } } } CHAPTER 4 ■ BUILD AN E
- Page 145 and 146: ■ Note For the sake of brevity, D
- Page 147 and 148: } ?> CHAPTER 4 ■ BUILD AN EVENTS
- Page 149 and 150: } ?> } include_once $filename; CHAP
- Page 151: private $_startDay; public function
- Page 155 and 156: } ?> ■ Note For the sake of brevi
- Page 157 and 158: * The event ID * * @var int */ publ
- Page 159 and 160: } * Create a new array, then organi
- Page 161 and 162: } ?> } /* * Return the markup for o
- Page 163 and 164: 9. After the loop, run another loop
- Page 165 and 166: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 167 and 168: Figure 4-5. The markup as generated
- Page 169 and 170: } } if ( isset($events[$c]) ) { for
- Page 171 and 172: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 173 and 174: } background-color: #BCD; .weekdays
- Page 175 and 176: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 177 and 178: CHAPTER 4 ■ BUILD AN EVENTS CALEN
- Page 179 and 180: private $_daysInMonth; private $_st
- Page 181 and 182: * * Include necessary files */ incl
- Page 183 and 184: C H A P T E R 5 ■ ■ ■ Add Con
- Page 185 and 186: } /* * Build the markup */ return
- Page 187 and 188: } ?> CHAPTER 5 ■ ADD CONTROLS TO
- Page 189 and 190: } legend { font-size: 24px; font-we
- Page 191 and 192: CHAPTER 5 ■ ADD CONTROLS TO CREAT
- Page 193 and 194: private $_m; private $_y; private $
- Page 195 and 196: CHAPTER 5 ■ ADD CONTROLS TO CREAT
- Page 197 and 198: CHAPTER 5 ■ ADD CONTROLS TO CREAT
- Page 199 and 200: CHAPTER 5 ■ ADD CONTROLS TO CREAT
- Page 201 and 202: Figure 5-4. The Admin button appear
- Page 203 and 204:
} ?> CHAPTER 5 ■ ADD CONTROLS TO
- Page 205 and 206:
$css_files = array("style.css", "ad
- Page 207 and 208:
Generating a Delete Button CHAPTER
- Page 209 and 210:
public function __construct($dbo=NU
- Page 211 and 212:
value="Nope! Just Kidding!" />
- Page 213 and 214:
include_once 'assets/common/header.
- Page 215 and 216:
C H A P T E R 6 ■ ■ ■ Passwor
- Page 217 and 218:
Please Log In Username Password
- Page 219 and 220:
} ?> } /* * If an int was passed, s
- Page 221 and 222:
} try { WHERE `user_name` = :uname
- Page 223 and 224:
} else { return "Your username or p
- Page 225 and 226:
Creating this function is relativel
- Page 227 and 228:
$obj = new Admin($dbo); // Load a h
- Page 229 and 230:
( 'testuser', 'a1645e41f29c45c46539
- Page 231 and 232:
} } else { // Redirect to the main
- Page 233 and 234:
CHAPTER 6 ■ PASSWORD PROTECTION S
- Page 235 and 236:
*/ return
- Page 237 and 238:
Modifying the App to Handle the Use
- Page 239 and 240:
Figure 6-8. Clicking the Log Out bu
- Page 241 and 242:
ADMIN_OPTIONS; } else { return
- Page 243 and 244:
private $_daysInMonth; private $_st
- Page 245 and 246:
if ( !isset($_SESSION['user']) ) {
- Page 247:
include_once 'assets/common/footer.
- Page 251 and 252:
C H A P T E R 7 ■ ■ ■ Enhanci
- Page 253 and 254:
Create a JavaScript Initialization
- Page 255 and 256:
Including the Stylesheet in the Ind
- Page 257 and 258:
}); }); event.preventDefault(); //
- Page 259 and 260:
}); }); CHAPTER 7 ■ ENHANCING THE
- Page 261 and 262:
Calling the Utility Function from t
- Page 263 and 264:
var obj = { "name" : "Jason Lengsto
- Page 265 and 266:
* * Enable sessions */ session_star
- Page 267 and 268:
Pulls up events in a modal window $
- Page 269 and 270:
Add a Close Button CHAPTER 7 ■ EN
- Page 271 and 272:
Fade Out the Modal Window CHAPTER 7
- Page 273 and 274:
Figure 7-4. The modal window mid-fa
- Page 275 and 276:
}; } { } event.preventDefault(); //
- Page 277 and 278:
CHAPTER 7 ■ ENHANCING THE USER IN
- Page 279 and 280:
C H A P T E R 8 ■ ■ ■ Editing
- Page 281 and 282:
$("li>a").live("click", function(ev
- Page 283 and 284:
} else { $id = NULL; } echo $obj->$
- Page 285 and 286:
} "boxin" : function(data, modal) {
- Page 287 and 288:
CHAPTER 8 ■ EDITING THE CALENDAR
- Page 289 and 290:
} { $id = (int) $_POST['event_id'];
- Page 291 and 292:
}; }, // Deserializes the query str
- Page 293 and 294:
}; }, // Code to add the event goes
- Page 295 and 296:
}; "deserialize" : function(str){..
- Page 297 and 298:
}; "deserialize" : function(str){..
- Page 299 and 300:
}; }, // Since the date object is c
- Page 301 and 302:
Edits events without reloading $(".
- Page 303 and 304:
Figure 8-3. Here the event cannot b
- Page 305 and 306:
} * Returns the ID of the event */
- Page 307 and 308:
}); var action = "edit_event"; // L
- Page 309 and 310:
}); id = $(event.target) .siblings(
- Page 311 and 312:
}); // Prevents the form from submi
- Page 313 and 314:
Figure 8-6. After you edit an event
- Page 315 and 316:
foreach ( $C as $name => $val ) { d
- Page 317 and 318:
CHAPTER 8 ■ EDITING THE CALENDAR
- Page 319 and 320:
); ) 'object' => 'Calendar', 'metho
- Page 321 and 322:
}; "removeevent" : function() { //
- Page 323:
Figure 8-9. After deleting "Test Ev
- Page 327 and 328:
C H A P T E R 9 ■ ■ ■ Perform
- Page 329 and 330:
* * Start by simply outputting the
- Page 331 and 332:
egexes, they will become a powerful
- Page 333 and 334:
TEST_DATA; /* * Use str_ireplace()
- Page 335 and 336:
After you get the hang of regular e
- Page 337 and 338:
em { background-color: #FF0; border
- Page 339 and 340:
Using Character Class Shorthand CHA
- Page 341 and 342:
CHAPTER 9 ■ PERFORMING FORM VALID
- Page 343 and 344:
Figure 9-12. Adding an optional che
- Page 345 and 346:
Regular Expression Demo em { ba
- Page 347 and 348:
Figure 9-17. Expanding the validate
- Page 349 and 350:
CHAPTER 9 ■ PERFORMING FORM VALID
- Page 351 and 352:
public function displayForm() {...}
- Page 353 and 354:
} ?> CHAPTER 9 ■ PERFORMING FORM
- Page 355 and 356:
Including the New File in the Foote
- Page 357 and 358:
}); // Fades out the modal window f
- Page 359:
Figure 9-25. The error message in a
- Page 362 and 363:
346 CHAPTER 10 ■ EXTENDING JQUERY
- Page 364 and 365:
348 CHAPTER 10 ■ EXTENDING JQUERY
- Page 366 and 367:
350 CHAPTER 10 ■ EXTENDING JQUERY
- Page 368 and 369:
352 CHAPTER 10 ■ EXTENDING JQUERY
- Page 370 and 371:
354 CHAPTER 10 ■ EXTENDING JQUERY
- Page 372 and 373:
356 CHAPTER 10 ■ EXTENDING JQUERY
- Page 374 and 375:
358 CHAPTER 10 ■ EXTENDING JQUERY
- Page 376 and 377:
360 CHAPTER 10 ■ EXTENDING JQUERY
- Page 378 and 379:
362 ■ INDEX ■ A active class, 2
- Page 380 and 381:
364 ■ INDEX class.calendar.inc.ph
- Page 382 and 383:
366 ■ INDEX .not( ) method, 27 .p
- Page 384 and 385:
368 ■ INDEX array of event object
- Page 386 and 387:
370 ■ INDEX .hide( ) method, 65-6
- Page 388 and 389:
372 ■ INDEX login credentials cla
- Page 390 and 391:
374 ■ INDEX adding effects to, 25
- Page 392 and 393:
376 ■ INDEX setting in events cal
- Page 394:
378 ■ INDEX extracting query stri