2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

Import from DCARF SVN

This commit is contained in:
azammitdcarf
2008-10-15 22:36:05 +00:00
parent 4f0b4f0bbb
commit 1445da495b
2237 changed files with 714445 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
<?php
/**
* Server that exposes a class for doing a fake review
*
* @category HTML
* @package AJAX
* @author Joshua Eichorn <josh@bluga.net>
* @copyright 2005 Joshua Eichorn
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version Release: 0.5.2
* @link http://pear.php.net/package/HTML_AJAX
*/
// include the server class
include 'HTML/AJAX/Server.php';
// extend HTML_AJAX_Server creating our own custom one with init{ClassName} methods for each class it supports calls on
class ReviewServer extends HTML_AJAX_Server {
// this flag must be set to on init methods
var $initMethods = true;
// init method for the test class, includes needed files an registers it for ajax
function initReview() {
include 'review.class.php';
$this->registerClass(new review(),'Review',array('newReview','updateReview')); // specify methods so that we get case in php4
}
}
session_start();
// create an instance of our test server
$server = new ReviewServer();
// handle requests as needed
$server->handleRequest();
?>

View File

@@ -0,0 +1,136 @@
<?php
/**
* Almost real life example, show a list reviews, letting you add one, and then updating the list
*
* @category HTML
* @package AJAX
* @author Joshua Eichorn <josh@bluga.net>
* @copyright 2005 Joshua Eichorn
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version Release: 0.5.2
* @link http://pear.php.net/package/HTML_AJAX
*/
// include the helper class
require_once 'HTML/AJAX/Helper.php';
// create an instance and set the server url
session_start();
$ajaxHelper = new HTML_AJAX_Helper();
$ajaxHelper->serverUrl = 'auto_server.php';
$ajaxHelper->jsLibraries[] = 'JSON'; // not included in the default list before 0.2.6
?>
<html>
<head>
<?php
// output a javascript neded to setup HTML_AJAX
// by default this is all the libraries shipped with HTML_AJAX, take a look at $ajaxHelper->jsLibraries to edit the list
echo $ajaxHelper->setupAJAX();
// ajax helper should do this for you but it doesn't yet
?>
<script type="text/javascript" src="auto_server.php?stub=review"></script>
<script type="text/javascript">
var reviewCallback = {
// after a review we get a chunk of html that we can update the reviewList with
newReview: function(result) {
document.getElementById('reviewList').innerHTML += result;
},
// after a review is updated we get a chunk of html, replace a node from our lookup list with that
updateReview: function(result) {
var newdiv = document.createElement('div');
newdiv.innerHTML = result[1];
document.getElementById('reviewList').replaceChild(newdiv.firstChild,reviewCallback.nodeList[result[0]]);
},
nodeList: []
}
function sendReview(form) {
var remoteReview = new Review(reviewCallback);
var payload = new Object();
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
payload[form.elements[i].name] = form.elements[i].value;
}
}
// do any needed validation here
remoteReview.newReview(payload);
}
function updateReview(id,form) {
var remoteReview = new Review(reviewCallback);
var payload = new Object();
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
payload[form.elements[i].name] = form.elements[i].value;
}
}
// do any needed validation here
remoteReview.updateReview(id,payload);
}
function editReview(id,node) {
var form = document.getElementById('reviewForm').cloneNode(true);
form.onsubmit = function() { updateReview(id,this); return false; }
var data = new Object();
var divs = node.getElementsByTagName('div');
for(var i = 0; i < divs.length; i++) {
if (divs[i].className) {
data[divs[i].className] = divs[i].innerHTML;
}
}
for(var i = 0; i < form.elements.length; i++) {
if (form.elements[i].name) {
form.elements[i].value = data[form.elements[i].name];
}
}
document.getElementById('reviewList').replaceChild(form,node);
reviewCallback.nodeList[id] = form;
}
</script>
<style type="text/css">
.name {
margin-top: 5px;
background-color: #ddd;
}
#reviewList {
width: 300px;
}
</style>
</head>
<body>
<h2>Add a new Review</h2>
<form id="reviewForm" onsubmit="sendReview(this); return false;" style="border: dotted 1px black">
Your Name: <input name="name"><br>
Your Review: <textarea name="review"></textarea><br>
<input type="submit">
</form>
<div id="reviewList">
<?php
if (isset($_SESSION['reviews'])) {
foreach($_SESSION['reviews'] as $key => $review) {
echo "<div onclick='editReview($key,this)'><div class='name'>$review->name</div><div class='review'>$review->review</div></div>\n";
}
}
?>
</div>
</body>
</html>
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
?>

View File

@@ -0,0 +1,33 @@
<?php
class Review {
// constructor won't be exported
function Review() {
if (!isset($_SESSION['reviews'])) {
$_SESSION['reviews'] = array();
}
}
// data is an array of objects
function newReview($data) {
// clean data, its coming from the client
$data['name'] = htmlentities($data['name']);
$data['review'] = htmlentities($data['review']);
$_SESSION['reviews'][] = $data;
$key = count($_SESSION['reviews'])-1;
return "<div onclick='editReview($key,this)'><div class='name'>$data[name]</div><div class='review'>$data[review]</div></div>";
}
function updateReview($key,$data) {
// clean data, its coming from the client
$data['name'] = htmlentities($data['name']);
$data['review'] = htmlentities($data['review']);
$_SESSION['reviews'][$key] = $data;
return array($key,"<div onclick='editReview($key,this)'><div class='name'>$data[name]</div><div class='review'>$data[review]</div></div>");
}
}
?>