Skip to content

Commit

Permalink
wiki revs partial
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Hendrickson committed Oct 27, 2009
1 parent c0f2104 commit 1c25bae
Show file tree
Hide file tree
Showing 12 changed files with 221 additions and 19 deletions.
2 changes: 2 additions & 0 deletions app/shortener/shortener.php
Expand Up @@ -72,6 +72,8 @@ function set_up_new_shortener( &$model, &$rec ) {
global $request;
if (!($request->resource == 'blogs'))
return;
if (!isset($_POST['shortener_domain']))
return;
// XXX subdomain upgrade
$url = $request->url_for(array('resource'=>'twitter/'.$rec->nickname));
require_once(ABSPATH.WPINC.'/class-snoopy.php');
Expand Down
17 changes: 13 additions & 4 deletions app/wiki/controllers/wiki_pages.php
Expand Up @@ -26,6 +26,8 @@ function post( &$vars ) {

function put( &$vars ) {
extract( $vars );


$resource->update_from_post( $request, true );
header_status( '200 OK' );
redirect_to( array('resource'=>'wikis','id'=>$request->params['id']) );
Expand Down Expand Up @@ -76,7 +78,7 @@ function _index( &$vars ) {

function _revisions( &$vars ) {
extract($vars);

echo 'a';
$Member = $collection->MoveFirst();
$Entry = $Member->FirstChild( 'entries' );

Expand All @@ -89,9 +91,10 @@ function _revisions( &$vars ) {
);
$Revision->set_param( 'find_by', $where );
$Revision->find();
echo 'rev';

while ($r = $Revision->MoveNext()) {
$wp = mb_unserialize($r->data);
echo 1; $wp = mb_unserialize($r->data);
if (is_object($wp)){
if ($wp->id == $Member->id) {
$revisor = get_profile($r->profile_id);
Expand All @@ -100,7 +103,7 @@ function _revisions( &$vars ) {
}
}
}

echo 'do';
extract( $vars );
return vars(
array( &$collection, &$profile ),
Expand All @@ -115,8 +118,14 @@ function _entry( &$vars ) {
extract( $vars );
$Member = $collection->MoveNext();
$Entry = $Member->FirstChild( 'entries' );
$Wiki =& $db->model('Wiki');
$w = $Wiki->find($Member->parent_id);
$Blog =& $db->model('Blog');
$b = $Blog->find($w->blog_id);
$blognick = $b->nickname;
$blogprefix = $b->prefix."_";
return vars(
array( &$collection, &$Member, &$Entry, &$profile ),
array( &$collection, &$Member, &$Entry, &$profile, &$blognick, &$blogprefix ),
get_defined_vars()
);
}
Expand Down
47 changes: 47 additions & 0 deletions app/wiki/models/Wiki.php
Expand Up @@ -9,10 +9,15 @@ function Wiki() {
$this->char_field( 'title' );
$this->char_field( 'prefix', 2 );
$this->char_field( 'nickname' );

$this->char_field( 'password' );

$this->time_field( 'created' );
$this->time_field( 'modified' );

$this->int_field( 'profile_id' );
$this->int_field( 'blog_id' );

$this->int_field( 'entry_id' );

$this->auto_field( 'id' );
Expand Down Expand Up @@ -69,3 +74,45 @@ function wiki_urls(){
}



after_filter( 'do_realtime_page_update', 'update_from_post' );

function do_realtime_page_update( &$model, &$rec ) {

global $request,$db;

if (!($rec->table == 'wiki_pages'))
return;

$Wiki =& $db->model('Wiki');
$w = $Wiki->find($rec->parent_id);
$Blog =& $db->model('Blog');
$b = $Blog->find($w->blog_id);
$blognick = $b->nickname;
$blogprefix = $b->prefix."_";

$changed = false;

if (isset($request->params['wikipage']['header']))
$changed = 'header';

if (isset($request->params['wikipage']['body']))
$changed = 'body';

if (isset($request->params['wikipage']['footer']))
$changed = 'footer';

if ($changed)
realtime(
'page_update',
array(
'div'=>$changed,
'html'=>$rec->$changed
),
$blogprefix
);

}



5 changes: 5 additions & 0 deletions app/wiki/models/WikiPage.php
Expand Up @@ -14,6 +14,8 @@ function WikiPage() {

$this->text_field( 'header' );
$this->text_field( 'footer' );

$this->int_field( 'blog_id' );

$this->text_field( 'summary' );

Expand Down Expand Up @@ -63,3 +65,6 @@ function WikiPage() {
}





81 changes: 73 additions & 8 deletions app/wiki/views/wiki_pages/_entry.html
@@ -1,5 +1,8 @@
<html>
<head>
<?php if (REALTIME_HOST) : ?>
<script type="text/javascript" src="http://<?php echo REALTIME_HOST; ?>/meteor.js"></script>
<?php endif; ?>
<script type="text/javascript" src="<?php base_path(); ?>resource/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="<?php base_path(); ?>resource/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
<script type="text/javascript" src="<?php base_path(); ?>resource/jeditable/jquery.jeditable.js"></script>
Expand All @@ -12,6 +15,10 @@
});
}

function page_update(data){
$("#jeditable_"+data['div']).html(data['html']);
}

function initMCE(){
tinyMCE.init({mode : "none",
theme : "advanced",
Expand Down Expand Up @@ -69,7 +76,7 @@
<div class="jeditable_footer" id="jeditable_footer"><?php echo $Member->footer; ?></div>


<?php $stream = 'http://openmicroblogger.com/twitter/documentation/'; ?>
<?php $stream = blog_url($blognick); ?>

<?php $timeline_callback = $stream.'api/statuses/public_timeline.json?callback=twitterCallback2'; ?>

Expand All @@ -85,6 +92,22 @@

<script type="text/javascript">
// <![CDATA[

var formb = '<p style="font-size:10pt;">(<a style="font-size:10pt;" href="<?php echo $login_url; ?>">sign in w/Twitter</a>)</p>';
var forma = '<form onsubmit="return do_wiki_comment()" method="post" action="<?php echo $post_to; ?>"><input type="hidden" name="method" value="post"><textarea name="post[title]" id="post_title" cols="15" rows="2"></textarea><br /><input type="checkbox" name="tweet_it" id="tweet_it">post to Twitter<br /><input type="submit" value="Post comment"></form>';

function do_wiki_comment(){
var someurl = "<?php echo $post_to; ?>";
var submitdata = {};
submitdata['post[title]'] = $("#post_title").val();
submitdata['method'] = 'post';
$("#loginform").html("<img src='<?php base_path(); ?>resource/jeditable/indicator.gif'>");
$.post(someurl, submitdata, function(str) {
$("#loginform").html(forma);
});
return false;
}

function twitterCallback2(C){
var A=[];
for ( var D=0; D<C.length; D++ ) {
Expand All @@ -100,8 +123,6 @@
document.getElementById("tweetlist").innerHTML=A.join("");
}
function loginCallback(C){
var formb = '<p style="font-size:10pt;">(<a style="font-size:10pt;" href="<?php echo $login_url; ?>">sign in w/Twitter</a>)</p>';
var forma = '<form method="post" action="<?php echo $post_to; ?>"><input type="hidden" name="method" value="post"><textarea name="post[title]" cols="15" rows="2"></textarea><br /><input type="submit" value="Post comment"></form>';
if (C == 1){
document.getElementById("loginform").innerHTML=forma;
}else {
Expand Down Expand Up @@ -140,28 +161,72 @@
$(function(){

<?php
global $request;

$field='header';
$nam="header";
$post='wikipage';
$namurl='http://openmicroblogger.com/wiki_pages';
$namurl=$request->url_for('wiki_pages');
tinymce_widget_text_post_helper($nam,$namurl,$post,$field,$Entry);

$field='body';
$nam="body";
$post='wikipage';
$namurl='http://openmicroblogger.com/wiki_pages';
tinymce_widget_text_post_helper($nam,$namurl,$post,$field,$Entry);

$field='footer';
$nam="footer";
$post='wikipage';
$namurl='http://openmicroblogger.com/wiki_pages';
tinymce_widget_text_post_helper($nam,$namurl,$post,$field,$Entry);

?>

});
</script>

<?php if (REALTIME_HOST) : ?>

<?php

$chan = $blogprefix;
?>

<script type="text/javascript">
// <![CDATA[
Meteor.hostid = '<?php echo get_profile_id(); ?>';
Meteor.host = "<?php echo REALTIME_HOST; ?>";
Meteor.registerEventCallback("process", test);
Meteor.joinChannel("<?php echo $chan; ?>", 0);
Meteor.mode = 'stream';
Meteor.connect();
function test(data) {
data = data.substring(0,(data.length - 10));
eval( "data = " + data );
if (data['callback'].length >0) {
eval( data['callback']+"(data)" );
} else if (data['in_reply_to']) {
var selectr = data['in_reply_to'];
$(selectr).append(render_a_tweet(data));
//$(selectr).append(data['html']);
} else {
$("#postlist").prepend(render_a_tweet(data));
//$("#postlist").prepend(data['html']);
}
<?php if (environment('oembed')) : ?>
$('a.oembed').oembed();
<?php endif; ?>
};


function render_a_tweet(data){

var tweetit = '<li><img width="20" height="20" src="'+data['avatar']+"\"><span>&nbsp;"+'<a href="'+data['profile_url']+'">'+data['nickname']+"</a>"+' '+data['tweet']+'</span> <a href="'+data['link']+'">'+data['created']+"</a></li>";
$("#tweetlist").prepend(tweetit);

}

// ]]>
</script>
<?php endif; ?>

<p>Page revisions:</p>
<?php render_partial('revisions'); ?>
</body>
Expand Down
Empty file.
14 changes: 9 additions & 5 deletions app/wiki/views/wikis/_new.html
@@ -1,22 +1,26 @@
<?php include 'wp-content/language/lang_chooser.php'; //Loads the language-file ?>

<form action="<?php url_for( 'wikis' ); ?>" method="post" name="wikis" id="wikis">
<form action="<?php url_for( array('resource'=>'blogs') ); ?>" method="post" name="blogs" id="blogs">
<div>
<input name="method" type="hidden" value="post" />
<input name="submit_form" type="hidden" value="wikis" />
<input name="submit_form" type="hidden" value="blogs" />
<table border="0">

<tr><th colspan="2">

</th></tr>

<tr>
<td align="right" valign="top"><p><?php echo $txt['wikis_edit_title']; ?></p></td>
<td valign="top" align="left"><input size="50" maxlength="255" id="wiki_title" name="wiki[title]" type="text" value="" /></td>
<td align="right" valign="top"><?php echo $txt['wikis_index_create_new_wiki']; ?> http://</td>
<td valign="top" align="left"><input size="3" maxlength="10" id="blog_title" name="blog[title]" type="text" value="" />.<?php global $request; echo $request->domain; ?></td>
</tr>
<tr>
<td align="right" valign="top">Wiki Title</td>
<td valign="top" align="left"><input size="14" maxlength="255" id="wiki_title" name="wiki_title" type="text" value="" /></td>
</tr>
<tr>
<td align="right" valign="top"><b></b></td>
<td valign="top" align="left"><input onclick="JavaScript:history.back();" name="button_group[Cancel]" value="<?php echo $txt['wikis_edit_cancel']; ?>" type="button" />
<td valign="top" align="left"><input onclick="JavaScript:history.back();" name="button_group[Cancel]" value="<?php echo $txt['blogs_edit_cancel']; ?>" type="button" />

<input value="<?php echo $txt['wikis_edit_save_stream']; ?>" type="submit" name="button_group" /></td>
</tr>
Expand Down
56 changes: 56 additions & 0 deletions app/wiki/wiki.php
Expand Up @@ -20,3 +20,59 @@ function wiki_menu() {
function wiki_post() {
}

after_filter( 'set_up_new_wiki', 'insert_from_post' );

function set_up_new_wiki( &$model, &$rec ) {
global $request,$db;
if (!($request->resource == 'blogs'))
return;
if (!isset($_POST['wiki_title']))
return;
$url = $request->url_for(array('resource'=>'twitter/'.$rec->nickname));
require_once(ABSPATH.WPINC.'/class-snoopy.php');
$snoop = new Snoopy;
$snoop->agent = 'OpenMicroBlogger http://openmicroblogger.org';
$snoop->submit($url);
if (!(strpos($snoop->response_code, '200')))
trigger_error('could not configure the new wiki', E_USER_ERROR);
if (!(signed_in()))
trigger_error('sorry, you must be signed in to do that', E_USER_ERROR);
$profile = get_profile();
$Wiki =& $db->model('Wiki');
$s = $Wiki->base();
$s->set_value('profile_id',$profile->id);
$s->set_value('nickname',$rec->nickname);
$s->set_value('blog_id',$rec->id);
$s->set_value('title',$_POST['wiki_title']);
$s->save_changes();
$s->set_etag();
//
global $prefix;
$prefix = $rec->prefix."_";
$db->prefix = $prefix;
$Person =& $db->model('Person');
$Person->save();
$Identity =& $db->model('Identity');
$Identity->save();
$i = make_identity(array(
$profile->nickname,
$profile->avatar,
$profile->fullname,
$profile->bio,
$profile->homepage,
$profile->locality
),true);

$Setting =& $db->model('Setting');
$tp = $Setting->base();
$tp->set_value('name','config.env.theme');
$tp->set_value('value','p2');
$tp->save_changes();

$person_id = 1;
set_cookie($person_id);
$_SESSION['openid_complete'] = true;

redirect_to($url);

}
6 changes: 4 additions & 2 deletions db/library/dbscript/_functions.php
Expand Up @@ -3260,7 +3260,7 @@ function readUrl($url){
return false;
}

function realtime($callback,$payload){
function realtime($callback,$payload,$prefix=false){

if (!PING)
return;
Expand All @@ -3270,7 +3270,9 @@ function realtime($callback,$payload){

global $db;

if (!empty($db->prefix))
if ($prefix)
$chan = $prefix;
elseif (!empty($db->prefix))
$chan = $db->prefix;
else
$chan = "chan";
Expand Down

0 comments on commit 1c25bae

Please sign in to comment.