aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/bbcode.php12
-rwxr-xr-xinclude/diaspora.php4
-rw-r--r--include/message.php2
-rw-r--r--mod/editblock.php17
-rw-r--r--mod/editlayout.php17
-rw-r--r--mod/editwebpage.php15
-rw-r--r--mod/impel.php30
-rw-r--r--mod/message.php22
-rw-r--r--view/js/main.js5
-rw-r--r--view/theme/redbasic/css/style.css5
10 files changed, 103 insertions, 26 deletions
diff --git a/include/bbcode.php b/include/bbcode.php
index 0803ed365..d7a5ac457 100644
--- a/include/bbcode.php
+++ b/include/bbcode.php
@@ -159,6 +159,14 @@ function bb_parse_app($match) {
}
+function bb_parse_element($match) {
+ $j = json_decode(base64url_decode($match[1]),true);
+ if($j) {
+ $o = EOL . '<a href="' . z_root() . '" foo="baz" onclick="importElement(\'' . $match[1] . '\'); return false;" >' . t('Install design element: ') . $j['pagetitle'] . '</a>' . EOL;
+ }
+ return $o;
+}
+
function bb_qr($match) {
return '<img class="zrl" src="' . z_root() . '/photo/qr?f=&qr=' . urlencode($match[1]) . '" alt="' . t('QR code') . '" title="' . htmlspecialchars($match[1],ENT_QUOTES,'UTF-8') . '" />';
}
@@ -700,6 +708,10 @@ function bbcode($Text,$preserve_nl = false, $tryoembed = true) {
$Text = preg_replace_callback("/\[app\](.*?)\[\/app\]/ism",'bb_parse_app', $Text);
}
+ if(strpos($Text,'[/element]') !== false) {
+ $Text = preg_replace_callback("/\[element\](.*?)\[\/element\]/ism",'bb_parse_element', $Text);
+ }
+
// html5 video and audio
if (strpos($Text,'[/video]') !== false) {
diff --git a/include/diaspora.php b/include/diaspora.php
index 0d4271cee..758f6e73c 100755
--- a/include/diaspora.php
+++ b/include/diaspora.php
@@ -928,8 +928,8 @@ function get_diaspora_reshare_xml($url,$recurse = 0) {
// see if it's a reshare of a reshare
if($source_xml->root_diaspora_id && $source_xml->root_guid && $recurse < 15) {
- $orig_author = notags(unxmlify($xml->root_diaspora_id));
- $orig_guid = notags(unxmlify($xml->root_guid));
+ $orig_author = notags(unxmlify($source_xml->root_diaspora_id));
+ $orig_guid = notags(unxmlify($source_xml->root_guid));
$source_url = 'https://' . substr($orig_author,strpos($orig_author,'@')+1) . '/p/' . $orig_guid . '.xml';
$y = get_diaspora_reshare_xml($source_url,$recurse+1);
if($y)
diff --git a/include/message.php b/include/message.php
index 88cfb7ba2..b063530d6 100644
--- a/include/message.php
+++ b/include/message.php
@@ -50,7 +50,7 @@ function send_message($uid = 0, $recipient='', $body='', $subject='', $replyto='
// look for any existing conversation structure
if(strlen($replyto)) {
- $r = q("select convid from mail where uid = %d and ( mid = '%s' or parent_mid = '%s' ) limit 1",
+ $r = q("select convid from mail where channel_id = %d and ( mid = '%s' or parent_mid = '%s' ) limit 1",
intval(local_user()),
dbesc($replyto),
dbesc($replyto)
diff --git a/mod/editblock.php b/mod/editblock.php
index 536ddd7d2..3b6ce4bbf 100644
--- a/mod/editblock.php
+++ b/mod/editblock.php
@@ -152,6 +152,23 @@ function editblock_content(&$a) {
if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
$o .= '<br /><br /><a class="block-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Block') . '</a><br />';
+
+ $x = array(
+ 'type' => 'block',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
+
+
return $o;
}
diff --git a/mod/editlayout.php b/mod/editlayout.php
index 1e8a6e990..89cae2b0c 100644
--- a/mod/editlayout.php
+++ b/mod/editlayout.php
@@ -145,6 +145,23 @@ function editlayout_content(&$a) {
if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
$o .= '<br /><br /><a class="layout-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Layout') . '</a><br />';
+
+ $x = array(
+ 'type' => 'layout',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
+
+
return $o;
}
diff --git a/mod/editwebpage.php b/mod/editwebpage.php
index 9fe76ba98..41b5bb3e7 100644
--- a/mod/editwebpage.php
+++ b/mod/editwebpage.php
@@ -185,6 +185,21 @@ function editwebpage_content(&$a) {
if(($itm[0]['author_xchan'] === $ob) || ($itm[0]['owner_xchan'] === $ob))
$o .= '<br /><br /><a class="page-delete-link" href="item/drop/' . $itm[0]['id'] . '" >' . t('Delete Webpage') . '</a><br />';
+
+ $x = array(
+ 'type' => 'webpage',
+ 'title' => $itm[0]['title'],
+ 'body' => $itm[0]['body'],
+ 'term' => $itm[0]['term'],
+ 'created' => $itm[0]['created'],
+ 'edited' => $itm[0]['edited'],
+ 'mimetype' => $itm[0]['mimetype'],
+ 'pagetitle' => $page_title,
+ 'mid' => $itm[0]['mid']
+ );
+
+ $o .= EOL . EOL . t('Share') . EOL . '<textarea onclick="this.select();" class="shareable_element_text" >[element]' . base64url_encode(json_encode($x)) . '[/element]</textarea>' . EOL . EOL;
+
return $o;
}
diff --git a/mod/impel.php b/mod/impel.php
index 3c29d7cdb..1c7541bef 100644
--- a/mod/impel.php
+++ b/mod/impel.php
@@ -7,11 +7,13 @@ function impel_init(&$a) {
$ret = array('success' => false);
- if(! $local_user())
+ if(! local_user())
json_return_and_die($ret);
+ logger('impel: ' . print_r($_REQUEST,true), LOGGER_DATA);
+
$elm = $_REQUEST['element'];
- $x = base64_urldecode($elm);
+ $x = base64url_decode($elm);
if(! $x)
json_return_and_die($ret);
@@ -20,7 +22,7 @@ function impel_init(&$a) {
json_return_and_die($ret);
- $channel = get_channel();
+ $channel = $a->get_channel();
$arr = array();
@@ -28,14 +30,17 @@ function impel_init(&$a) {
case 'webpage':
$arr['item_restrict'] = ITEM_WEBPAGE;
$namespace = 'WEBPAGE';
+ $installed_type = t('webpage');
break;
case 'block':
$arr['item_restrict'] = ITEM_BUILDBLOCK;
$namespace = 'BUILDBLOCK';
+ $installed_type = t('block');
break;
case 'layout':
$arr['item_restrict'] = ITEM_PDL;
$namespace = 'PDL';
+ $installed_type = t('layout');
break;
default:
logger('mod_impel: unrecognised element type' . print_r($j,true));
@@ -46,8 +51,10 @@ function impel_init(&$a) {
$arr['title'] = $j['title'];
$arr['body'] = $j['body'];
$arr['term'] = $j['term'];
+ $arr['created'] = datetime_convert('UTC','UTC', $j['created']);
+ $arr['edited'] = datetime_convert('UTC','UTC',$j['edited']);
$arr['owner_xchan'] = get_observer_hash();
- $arr['author_xchan'] = (($j['author_xchan']) ? $j['author_xchan'] : $get_observer_hash());
+ $arr['author_xchan'] = (($j['author_xchan']) ? $j['author_xchan'] : get_observer_hash());
$arr['mimetype'] = (($j['mimetype']) ? $j['mimetype'] : 'text/bbcode');
if(! $j['mid'])
@@ -63,9 +70,6 @@ function impel_init(&$a) {
-
- $channel = get_channel();
-
// Verify ability to use html or php!!!
$execflag = false;
@@ -82,19 +86,21 @@ function impel_init(&$a) {
$remote_id = 0;
- $z = q("select * from item_id where $sid = '%s' and service = '%s' and uid = %d limit 1",
+ $z = q("select * from item_id where sid = '%s' and service = '%s' and uid = %d limit 1",
dbesc($pagetitle),
dbesc($namespace),
intval(local_user())
);
- $i = q("select id from item where mid = '%s' and $uid = %d limit 1",
+ $i = q("select id from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['mid']),
intval(local_user())
);
if($z && $i) {
$remote_id = $z[0]['id'];
$arr['id'] = $i[0]['id'];
- $x = item_store_update($arr,$execflag);
+ // don't update if it has the same timestamp as the original
+ if($arr['edited'] > $i[0]['edited'])
+ $x = item_store_update($arr,$execflag);
}
else {
$x = item_store($arr,$execflag);
@@ -102,12 +108,14 @@ function impel_init(&$a) {
if($x['success'])
$item_id = $x['item_id'];
- $channel = get_channel();
update_remote_id($channel,$item_id,$arr['item_restrict'],$pagetitle,$namespace,$remote_id,$arr['mid']);
$ret['success'] = true;
+
+ info( sprintf( t('%s element installed'), $installed_type));
+
json_return_and_die(true);
} \ No newline at end of file
diff --git a/mod/message.php b/mod/message.php
index c14bf2161..7f3b6180a 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -61,18 +61,18 @@ function message_content(&$a) {
foreach($r as $rr) {
$o .= replace_macros($tpl, array(
- '$id' => $rr['id'],
- '$from_name' => $rr['from']['xchan_name'],
- '$from_url' => chanlink_hash($rr['from_xchan']),
+ '$id' => $rr['id'],
+ '$from_name' => $rr['from']['xchan_name'],
+ '$from_url' => chanlink_hash($rr['from_xchan']),
'$from_photo' => $rr['from']['xchan_photo_s'],
- '$to_name' => $rr['to']['xchan_name'],
- '$to_url' => chanlink_hash($rr['to_xchan']),
- '$to_photo' => $rr['to']['xchan_photo_s'],
- '$subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
- '$delete' => t('Delete message'),
- '$body' => smilies(bbcode($rr['body'])),
- '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
- '$seen' => $rr['seen']
+ '$to_name' => $rr['to']['xchan_name'],
+ '$to_url' => chanlink_hash($rr['to_xchan']),
+ '$to_photo' => $rr['to']['xchan_photo_s'],
+ '$subject' => (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'),
+ '$delete' => t('Delete conversation'),
+ '$body' => smilies(bbcode($rr['body'])),
+ '$date' => datetime_convert('UTC',date_default_timezone_get(),$rr['created'], t('D, d M Y - g:i A')),
+ '$seen' => $rr['seen']
));
}
$o .= alt_pager($a,count($r));
diff --git a/view/js/main.js b/view/js/main.js
index cf3749441..0560bc875 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -898,7 +898,10 @@ function updateConvItems(mode,data) {
"impel",
{ "element" : elem }
);
- return false;
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(NavUpdate,10);
+
+ return true;
}
function preview_post() {
diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css
index 7df70e714..1c036793c 100644
--- a/view/theme/redbasic/css/style.css
+++ b/view/theme/redbasic/css/style.css
@@ -2528,3 +2528,8 @@ blockquote {
}
}
+
+.shareable_element_text {
+ height: 300px;
+ width: 300px;
+} \ No newline at end of file