Merge branch 'master' of http://github.com/friendika/Free-Friendika
4
boot.php
|
@ -8,9 +8,9 @@ require_once("include/pgettext.php");
|
||||||
require_once('include/nav.php');
|
require_once('include/nav.php');
|
||||||
|
|
||||||
define ( 'FRIENDIKA_PLATFORM', 'Free Friendika');
|
define ( 'FRIENDIKA_PLATFORM', 'Free Friendika');
|
||||||
define ( 'FRIENDIKA_VERSION', '2.3.1120' );
|
define ( 'FRIENDIKA_VERSION', '2.3.1121' );
|
||||||
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
define ( 'DFRN_PROTOCOL_VERSION', '2.21' );
|
||||||
define ( 'DB_UPDATE_VERSION', 1093 );
|
define ( 'DB_UPDATE_VERSION', 1094 );
|
||||||
|
|
||||||
define ( 'EOL', "<br />\r\n" );
|
define ( 'EOL', "<br />\r\n" );
|
||||||
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
|
||||||
|
|
10
database.sql
|
@ -114,6 +114,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
|
||||||
CREATE TABLE IF NOT EXISTS `group` (
|
CREATE TABLE IF NOT EXISTS `group` (
|
||||||
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||||
`uid` int(10) unsigned NOT NULL,
|
`uid` int(10) unsigned NOT NULL,
|
||||||
|
`visible` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`deleted` tinyint(1) NOT NULL DEFAULT '0',
|
`deleted` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
`name` char(255) NOT NULL,
|
`name` char(255) NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
|
@ -632,3 +633,12 @@ CREATE TABLE IF NOT EXISTS `search` (
|
||||||
INDEX ( `uid` ),
|
INDEX ( `uid` ),
|
||||||
INDEX ( `term` )
|
INDEX ( `term` )
|
||||||
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `fserver` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||||
|
`server` CHAR( 255 ) NOT NULL ,
|
||||||
|
`posturl` CHAR( 255 ) NOT NULL ,
|
||||||
|
`key` TEXT NOT NULL,
|
||||||
|
INDEX ( `server` )
|
||||||
|
) ENGINE = MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
|
@ -96,6 +96,8 @@ function delivery_run($argv, $argc){
|
||||||
$uid = $r[0]['uid'];
|
$uid = $r[0]['uid'];
|
||||||
$updated = $r[0]['edited'];
|
$updated = $r[0]['edited'];
|
||||||
|
|
||||||
|
if(! $parent_id)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
||||||
|
|
|
@ -123,6 +123,9 @@ function notifier_run($argv, $argc){
|
||||||
$uid = $r[0]['uid'];
|
$uid = $r[0]['uid'];
|
||||||
$updated = $r[0]['edited'];
|
$updated = $r[0]['edited'];
|
||||||
|
|
||||||
|
if(! $parent_id)
|
||||||
|
return;
|
||||||
|
|
||||||
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`
|
||||||
FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d ORDER BY `id` ASC",
|
FROM `item` LEFT JOIN `sign` ON `sign`.`iid` = `item`.`id` WHERE `parent` = %d ORDER BY `id` ASC",
|
||||||
intval($parent_id)
|
intval($parent_id)
|
||||||
|
|
10
js/main.js
|
@ -95,6 +95,16 @@
|
||||||
if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
|
if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') }
|
||||||
$('#home-update').html(home);
|
$('#home-update').html(home);
|
||||||
|
|
||||||
|
var intro = $(data).find('intro').text();
|
||||||
|
if(intro == 0) { intro = ''; $('#intro-update').removeClass('show') } else { $('#intro-update').addClass('show') }
|
||||||
|
$('#intro-update').html(intro);
|
||||||
|
|
||||||
|
var mail = $(data).find('mail').text();
|
||||||
|
if(mail == 0) { mail = ''; $('#mail-update').removeClass('show') } else { $('#mail-update').addClass('show') }
|
||||||
|
$('#mail-update').html(mail);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var eNotif = $(data).find('notif')
|
var eNotif = $(data).find('notif')
|
||||||
notif = eNotif.attr('count');
|
notif = eNotif.attr('count');
|
||||||
if (notif>0){
|
if (notif>0){
|
||||||
|
|
|
@ -128,6 +128,11 @@ function photo_init(&$a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(function_exists('header_remove')) {
|
||||||
|
header_remove('Pragma');
|
||||||
|
header_remove('pragma');
|
||||||
|
}
|
||||||
|
|
||||||
header("Content-type: image/jpeg");
|
header("Content-type: image/jpeg");
|
||||||
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
|
header("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT");
|
||||||
header("Cache-Control: max-age=" . (3600*24));
|
header("Cache-Control: max-age=" . (3600*24));
|
||||||
|
|
|
@ -92,15 +92,11 @@ EOT;
|
||||||
|
|
||||||
function photos_post(&$a) {
|
function photos_post(&$a) {
|
||||||
|
|
||||||
logger('mod/photos.php: photos_post(): begin' , 'LOGGER_DEBUG');
|
logger('mod-photos: photos_post(): begin' , 'LOGGER_DEBUG');
|
||||||
|
|
||||||
foreach($_REQUEST AS $key => $val) {
|
|
||||||
logger('mod/photos.php: photos_post(): $_REQUEST key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG');
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($_FILES AS $key => $val) {
|
logger('mod_photos: REQUEST ' . print_r($_REQUEST,true), LOGGER_DATA);
|
||||||
logger('mod/photos.php: photos_post(): $_FILES key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG');
|
logger('mod_photos: FILES ' . print_r($_FILES,true), LOGGER_DATA);
|
||||||
}
|
|
||||||
|
|
||||||
$can_post = false;
|
$can_post = false;
|
||||||
$visitor = 0;
|
$visitor = 0;
|
||||||
|
@ -585,6 +581,9 @@ function photos_post(&$a) {
|
||||||
else
|
else
|
||||||
$visible = 0;
|
$visible = 0;
|
||||||
|
|
||||||
|
if(intval($_REQUEST['not_visible']))
|
||||||
|
$visible = 0;
|
||||||
|
|
||||||
$str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',',$_REQUEST['group_allow'])));
|
$str_group_allow = perms2str(((is_array($_REQUEST['group_allow'])) ? $_REQUEST['group_allow'] : explode(',',$_REQUEST['group_allow'])));
|
||||||
$str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',',$_REQUEST['contact_allow'])));
|
$str_contact_allow = perms2str(((is_array($_REQUEST['contact_allow'])) ? $_REQUEST['contact_allow'] : explode(',',$_REQUEST['contact_allow'])));
|
||||||
$str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',',$_REQUEST['group_deny'])));
|
$str_group_deny = perms2str(((is_array($_REQUEST['group_deny'])) ? $_REQUEST['group_deny'] : explode(',',$_REQUEST['group_deny'])));
|
||||||
|
@ -892,6 +891,7 @@ function photos_content(&$a) {
|
||||||
'$nickname' => $a->data['user']['nickname'],
|
'$nickname' => $a->data['user']['nickname'],
|
||||||
'$newalbum' => t('New album name: '),
|
'$newalbum' => t('New album name: '),
|
||||||
'$existalbumtext' => t('or existing album name: '),
|
'$existalbumtext' => t('or existing album name: '),
|
||||||
|
'$nosharetext' => t('Do not show a status post for this upload'),
|
||||||
'$albumselect' => template_escape($albumselect),
|
'$albumselect' => template_escape($albumselect),
|
||||||
'$permissions' => t('Permissions'),
|
'$permissions' => t('Permissions'),
|
||||||
'$aclselect' => (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb))),
|
'$aclselect' => (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb))),
|
||||||
|
|
|
@ -114,7 +114,7 @@ function ping_init(&$a) {
|
||||||
function xmlize($href, $name, $url, $photo, $date, $message){
|
function xmlize($href, $name, $url, $photo, $date, $message){
|
||||||
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>';
|
$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>';
|
||||||
return sprintf ( $notsxml,
|
return sprintf ( $notsxml,
|
||||||
$href, $name, $url, $photo, $date, $message
|
xmlify($href), xmlify($name), xmlify($url), xmlify($photo), xmlify($date), xmlify($message)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
15
update.php
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
define( 'UPDATE_VERSION' , 1093 );
|
define( 'UPDATE_VERSION' , 1094 );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -774,3 +774,16 @@ function update_1092() {
|
||||||
q("ALTER TABLE `user` ADD INDEX ( `login_date` ) ");
|
q("ALTER TABLE `user` ADD INDEX ( `login_date` ) ");
|
||||||
q("ALTER TABLE `user` ADD INDEX ( `account_expired` ) ");
|
q("ALTER TABLE `user` ADD INDEX ( `account_expired` ) ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function update_1093() {
|
||||||
|
q("CREATE TABLE IF NOT EXISTS `fserver` (
|
||||||
|
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
|
||||||
|
`server` CHAR( 255 ) NOT NULL ,
|
||||||
|
`posturl` CHAR( 255 ) NOT NULL ,
|
||||||
|
`key` TEXT NOT NULL,
|
||||||
|
INDEX ( `server` )
|
||||||
|
) ENGINE = MYISAM ");
|
||||||
|
|
||||||
|
q("ALTER TABLE `group` ADD `visible` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `uid` ");
|
||||||
|
|
||||||
|
}
|
|
@ -13,6 +13,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div id="photos-upload-exist-end"></div>
|
<div id="photos-upload-exist-end"></div>
|
||||||
|
|
||||||
|
<div id="photos-upload-noshare-div" class="photos-upload-noshare-div" >
|
||||||
|
<input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" />
|
||||||
|
<label id="photos-upload-noshare-text" for="photos-upload-noshare" >$nosharetext</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div id="photos-upload-perms" class="photos-upload-perms" >
|
<div id="photos-upload-perms" class="photos-upload-perms" >
|
||||||
<a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button" />
|
<a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button" />
|
||||||
|
|
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 443 B |
|
@ -1,67 +0,0 @@
|
||||||
|
|
||||||
<h2>$header</h2>
|
|
||||||
|
|
||||||
<div id="contact-edit-banner-name">$name</div>
|
|
||||||
|
|
||||||
$nettype
|
|
||||||
|
|
||||||
<form action="contacts/$contact_id" method="post" >
|
|
||||||
<input type="hidden" name="contact_id" value="$contact_id">
|
|
||||||
|
|
||||||
<div id="contact-edit-wrapper" >
|
|
||||||
|
|
||||||
<div id="contact-edit-photo-wrapper" >
|
|
||||||
<img id="contact-edit-direction-icon" src="$dir_icon" alt="$alt_text" title="$alt_text" />
|
|
||||||
<div id="contact-edit-photo" >
|
|
||||||
<a href="$url" title="$visit" /><img src="$photo" $sparkle alt="$name" /></a>
|
|
||||||
</div>
|
|
||||||
<div id="contact-edit-photo-end" ></div>
|
|
||||||
</div>
|
|
||||||
<div id="contact-edit-nav-wrapper" >
|
|
||||||
|
|
||||||
<div id="contact-edit-links" >
|
|
||||||
<a href="contacts/$contact_id/block" class="icon block" id="contact-edit-block-link" title="$block_text"></a>
|
|
||||||
<a href="contacts/$contact_id/ignore" class="icon no" id="contact-edit-ignore-link" title="$ignore_text"></a>
|
|
||||||
<a href="crepair/$contact_id" class="icon tools" id="contact-edit-repair" title="$lblcrepair"></a>
|
|
||||||
<a href="contacts/$contact_id/drop" class="icon drophide" id="contact-edit-drop-link" onclick="return confirmDelete();" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
|
|
||||||
</div>
|
|
||||||
<div id="contact-edit-nav-end"></div>
|
|
||||||
|
|
||||||
{{ if $poll_enabled }}
|
|
||||||
<div id="contact-edit-poll-wrapper">
|
|
||||||
<div id="contact-edit-last-update-text">$lastupdtext<span id="contact-edit-last-updated">$last_update</span></div>
|
|
||||||
<div id="contact-edit-poll-text">$updpub</div>
|
|
||||||
$poll_interval
|
|
||||||
<div id="contact-edit-update-now"><a href="contacts/$contact_id/update" >$udnow</a></div>
|
|
||||||
</div>
|
|
||||||
{{ endif }}
|
|
||||||
</div>
|
|
||||||
<div id="contact-edit-end" ></div>
|
|
||||||
|
|
||||||
$insecure
|
|
||||||
$blocked
|
|
||||||
$ignored
|
|
||||||
|
|
||||||
<div id="view-recent-wrapper"><a href="network/?cid=$contact_id" id="contact-view-recent">$lblrecent</a></div>
|
|
||||||
$lblsuggest
|
|
||||||
|
|
||||||
<div id="contact-edit-info-wrapper">
|
|
||||||
<h4>$lbl_info1</h4>
|
|
||||||
<textarea id="contact-edit-info" rows="10" cols="72" name="info" >$info</textarea>
|
|
||||||
</div>
|
|
||||||
<div id="contact-edit-info-end"></div>
|
|
||||||
|
|
||||||
<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
|
|
||||||
|
|
||||||
<div id="contact-edit-profile-select-text">
|
|
||||||
<h4>$lbl_vis1</h4>
|
|
||||||
<p>$lbl_vis2
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
$profile_select
|
|
||||||
<div id="contact-edit-profile-select-end"></div>
|
|
||||||
|
|
||||||
<input class="contact-edit-submit" type="submit" name="submit" value="$submit" />
|
|
||||||
|
|
||||||
</form>
|
|
||||||
</div>
|
|
After Width: | Height: | Size: 19 KiB |
|
@ -1,8 +0,0 @@
|
||||||
<div class="group-delete-wrapper" id="group-delete-wrapper-$id" >
|
|
||||||
<a href="group/drop/$id"
|
|
||||||
onclick="return confirmDelete();"
|
|
||||||
title="$delete"
|
|
||||||
id="group-delete-icon-$id"
|
|
||||||
class="drophide group-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" >Delete Group</a>
|
|
||||||
</div>
|
|
||||||
<div class="group-delete-end"></div>
|
|
|
@ -1,16 +0,0 @@
|
||||||
<h2>$title</h2>
|
|
||||||
|
|
||||||
|
|
||||||
<div id="group-edit-wrapper" >
|
|
||||||
<form action="group/$gid" id="group-edit-form" method="post" >
|
|
||||||
<div id="group-edit-name-wrapper" >
|
|
||||||
<label id="group-edit-name-label" for="group-edit-name" >$gname</label>
|
|
||||||
<input type="text" id="group-edit-name" name="groupname" value="$name" />
|
|
||||||
<input type="submit" name="submit" value="$submit">
|
|
||||||
$drop
|
|
||||||
</div>
|
|
||||||
<div id="group-edit-name-end"></div>
|
|
||||||
<div id="group-edit-desc">$desc</div>
|
|
||||||
<div id="group-edit-select-end" ></div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
Before Width: | Height: | Size: 911 B |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 81 KiB |
|
@ -1,251 +0,0 @@
|
||||||
|
|
||||||
<script language="javascript" type="text/javascript" src="$baseurl/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
|
|
||||||
<script language="javascript" type="text/javascript">
|
|
||||||
|
|
||||||
var editor=false;
|
|
||||||
var textlen = 0;
|
|
||||||
|
|
||||||
function initEditor(cb) {
|
|
||||||
if (editor==false) {
|
|
||||||
$("#profile-jot-text-loading").show();
|
|
||||||
tinyMCE.init({
|
|
||||||
theme : "advanced",
|
|
||||||
mode : "specific_textareas",
|
|
||||||
editor_selector: /(profile-jot-text|prvmail-text)/,
|
|
||||||
plugins : "bbcode,paste,fullscreen,autoresize",
|
|
||||||
theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code,fullscreen",
|
|
||||||
theme_advanced_buttons2 : "",
|
|
||||||
theme_advanced_buttons3 : "",
|
|
||||||
theme_advanced_toolbar_location : "top",
|
|
||||||
theme_advanced_toolbar_align : "center",
|
|
||||||
theme_advanced_blockformats : "blockquote,code",
|
|
||||||
//theme_advanced_resizing : true,
|
|
||||||
//theme_advanced_statusbar_location : "bottom",
|
|
||||||
paste_text_sticky : true,
|
|
||||||
entity_encoding : "raw",
|
|
||||||
add_unload_trigger : false,
|
|
||||||
remove_linebreaks : false,
|
|
||||||
force_p_newlines : false,
|
|
||||||
force_br_newlines : true,
|
|
||||||
forced_root_block : '',
|
|
||||||
convert_urls: false,
|
|
||||||
content_css: "$baseurl/view/custom_tinymce.css",
|
|
||||||
theme_advanced_path : false,
|
|
||||||
setup : function(ed) {
|
|
||||||
//Character count
|
|
||||||
ed.onKeyUp.add(function(ed, e) {
|
|
||||||
var txt = tinyMCE.activeEditor.getContent();
|
|
||||||
textlen = txt.length;
|
|
||||||
if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
|
|
||||||
$('#profile-jot-desc').html(ispublic);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$('#profile-jot-desc').html(' ');
|
|
||||||
}
|
|
||||||
|
|
||||||
if(textlen <= 140) {
|
|
||||||
$('#character-counter').removeClass('red');
|
|
||||||
$('#character-counter').removeClass('orange');
|
|
||||||
$('#character-counter').addClass('grey');
|
|
||||||
}
|
|
||||||
if((textlen > 140) && (textlen <= 420)) {
|
|
||||||
$('#character-counter').removeClass('grey');
|
|
||||||
$('#character-counter').removeClass('red');
|
|
||||||
$('#character-counter').addClass('orange');
|
|
||||||
}
|
|
||||||
if(textlen > 420) {
|
|
||||||
$('#character-counter').removeClass('grey');
|
|
||||||
$('#character-counter').removeClass('orange');
|
|
||||||
$('#character-counter').addClass('red');
|
|
||||||
}
|
|
||||||
$('#character-counter').text(textlen);
|
|
||||||
});
|
|
||||||
ed.onInit.add(function(ed) {
|
|
||||||
ed.pasteAsPlainText = true;
|
|
||||||
$("#profile-jot-text-loading").hide();
|
|
||||||
$("#profile-jot-submit-wrapper").show();
|
|
||||||
$("#profile-upload-wrapper").show();
|
|
||||||
$("#profile-attach-wrapper").show();
|
|
||||||
$("#profile-link-wrapper").show();
|
|
||||||
$("#profile-youtube-wrapper").show();
|
|
||||||
$("#profile-video-wrapper").show();
|
|
||||||
$("#profile-audio-wrapper").show();
|
|
||||||
$("#profile-location-wrapper").show();
|
|
||||||
$("#profile-nolocation-wrapper").show();
|
|
||||||
$("#profile-title-wrapper").show();
|
|
||||||
$("#profile-jot-plugin-wrapper").show();
|
|
||||||
$("#character-counter").show();
|
|
||||||
if (typeof cb!="undefined") cb();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
editor = true;
|
|
||||||
// setup acl popup
|
|
||||||
$("a#jot-perms-icon").fancybox({
|
|
||||||
'transitionIn' : 'none',
|
|
||||||
'transitionOut' : 'none'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
if (typeof cb!="undefined") cb();
|
|
||||||
}
|
|
||||||
} // initEditor
|
|
||||||
</script>
|
|
||||||
<script type="text/javascript" src="js/ajaxupload.js" ></script>
|
|
||||||
<script>
|
|
||||||
var ispublic = '$ispublic';
|
|
||||||
$(document).ready(function() {
|
|
||||||
/* enable tinymce on focus */
|
|
||||||
$("#profile-jot-text").focus(function(){
|
|
||||||
if (editor) return;
|
|
||||||
$(this).val("");
|
|
||||||
initEditor();
|
|
||||||
});
|
|
||||||
var uploader = new window.AjaxUpload(
|
|
||||||
'wall-image-upload',
|
|
||||||
{ action: 'wall_upload/$nickname',
|
|
||||||
name: 'userfile',
|
|
||||||
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
|
|
||||||
onComplete: function(file,response) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,response);
|
|
||||||
$('#profile-rotator').hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
var file_uploader = new window.AjaxUpload(
|
|
||||||
'wall-file-upload',
|
|
||||||
{ action: 'wall_attach/$nickname',
|
|
||||||
name: 'userfile',
|
|
||||||
onSubmit: function(file,ext) { $('#profile-rotator').show(); },
|
|
||||||
onComplete: function(file,response) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,response);
|
|
||||||
$('#profile-rotator').hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
$('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
|
|
||||||
var selstr;
|
|
||||||
$('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
|
|
||||||
selstr = $(this).text();
|
|
||||||
$('#jot-perms-icon').removeClass('unlock').addClass('lock');
|
|
||||||
$('#jot-public').hide();
|
|
||||||
$('.profile-jot-net input').attr('disabled', 'disabled');
|
|
||||||
});
|
|
||||||
if(selstr == null) {
|
|
||||||
$('#jot-perms-icon').removeClass('lock').addClass('unlock');
|
|
||||||
$('#jot-public').show();
|
|
||||||
$('.profile-jot-net input').attr('disabled', false);
|
|
||||||
}
|
|
||||||
|
|
||||||
}).trigger('change');
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function deleteCheckedItems() {
|
|
||||||
var checkedstr = '';
|
|
||||||
|
|
||||||
$('.item-select').each( function() {
|
|
||||||
if($(this).is(':checked')) {
|
|
||||||
if(checkedstr.length != 0) {
|
|
||||||
checkedstr = checkedstr + ',' + $(this).val();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
checkedstr = $(this).val();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$.post('item', { dropitems: checkedstr }, function(data) {
|
|
||||||
window.location.reload();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotGetLink() {
|
|
||||||
reply = prompt("$linkurl");
|
|
||||||
if(reply && reply.length) {
|
|
||||||
reply = bin2hex(reply);
|
|
||||||
$('#profile-rotator').show();
|
|
||||||
$.get('parse_url?url=' + reply, function(data) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
|
||||||
$('#profile-rotator').hide();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotGetVideo() {
|
|
||||||
reply = prompt("$utubeurl");
|
|
||||||
if(reply && reply.length) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotVideoURL() {
|
|
||||||
reply = prompt("$vidurl");
|
|
||||||
if(reply && reply.length) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotAudioURL() {
|
|
||||||
reply = prompt("$audurl");
|
|
||||||
if(reply && reply.length) {
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function jotGetLocation() {
|
|
||||||
reply = prompt("$whereareu", $('#jot-location').val());
|
|
||||||
if(reply && reply.length) {
|
|
||||||
$('#jot-location').val(reply);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotTitle() {
|
|
||||||
reply = prompt("$title", $('#jot-title').val());
|
|
||||||
if(reply && reply.length) {
|
|
||||||
$('#jot-title').val(reply);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotShare(id) {
|
|
||||||
$('#like-rotator-' + id).show();
|
|
||||||
$.get('share/' + id, function(data) {
|
|
||||||
if (!editor) $("#profile-jot-text").val("");
|
|
||||||
initEditor(function(){
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
|
||||||
$('#like-rotator-' + id).hide();
|
|
||||||
$(window).scrollTop(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function linkdropper(event) {
|
|
||||||
var linkFound = event.dataTransfer.types.contains("text/uri-list");
|
|
||||||
if(linkFound)
|
|
||||||
event.preventDefault();
|
|
||||||
}
|
|
||||||
|
|
||||||
function linkdrop(event) {
|
|
||||||
var reply = event.dataTransfer.getData("text/uri-list");
|
|
||||||
event.target.textContent = reply;
|
|
||||||
event.preventDefault();
|
|
||||||
if(reply && reply.length) {
|
|
||||||
$('#profile-rotator').show();
|
|
||||||
$.get('parse_url?url=' + reply, function(data) {
|
|
||||||
if (!editor) $("#profile-jot-text").val("");
|
|
||||||
initEditor(function(){
|
|
||||||
tinyMCE.execCommand('mceInsertRawHTML',false,data);
|
|
||||||
$('#profile-rotator').hide();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function jotClearLocation() {
|
|
||||||
$('#jot-coord').val('');
|
|
||||||
$('#profile-nolocation-wrapper').hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
$geotag
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
|
|
||||||
<div id="profile-jot-wrapper" >
|
|
||||||
<div id="profile-jot-banner-wrapper">
|
|
||||||
<div id="profile-jot-desc" > </div>
|
|
||||||
<div id="character-counter" class="grey" style="display: none;">0</div>
|
|
||||||
<div id="profile-rotator-wrapper" style="display: $visitor;" >
|
|
||||||
<img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display:none;" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<form id="profile-jot-form" action="$action" method="post" >
|
|
||||||
<input type="hidden" name="type" value="wall" />
|
|
||||||
<input type="hidden" name="profile_uid" value="$profile_uid" />
|
|
||||||
<input type="hidden" name="return" value="$return_path" />
|
|
||||||
<input type="hidden" name="location" id="jot-location" value="$defloc" />
|
|
||||||
<input type="hidden" name="coord" id="jot-coord" value="" />
|
|
||||||
<input type="hidden" name="title" id="jot-title" value="" />
|
|
||||||
<input type="hidden" name="post_id" value="$post_id" />
|
|
||||||
|
|
||||||
<img id="profile-jot-text-loading" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
|
||||||
<textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" >{{ if $content }}$content{{ else }}$share{{ endif }}</textarea>
|
|
||||||
{{ if $content }}<script>initEditor();</script>{{ endif }}
|
|
||||||
|
|
||||||
<div id="profile-upload-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<div id="wall-image-upload-div" ><a onclick="return false;" id="wall-image-upload" class="icon border camera" title="$upload"></a></div>
|
|
||||||
</div>
|
|
||||||
<div id="profile-attach-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<div id="wall-file-upload-div" ><a href="#" onclick="return false;" id="wall-file-upload" class="icon border attach" title="$attach"></a></div>
|
|
||||||
</div>
|
|
||||||
<div id="profile-link-wrapper" class="jot-tool" style="display: none;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
|
|
||||||
<a id="profile-link" class="icon border link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-youtube-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-youtube" class="icon border youtube" title="$youtube" onclick="jotGetVideo(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-video-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-video" class="icon border video" title="$video" onclick="jotVideoURL(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-audio-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-audio" class="icon border audio" title="$audio" onclick="jotAudioURL(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-location-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-location" class="icon border globe" title="$setloc" onclick="jotGetLocation(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-nolocation-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-nolocation" class="icon border noglobe" title="$noloc" onclick="jotClearLocation(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
<div id="profile-title-wrapper" class="jot-tool" style="display: none;" >
|
|
||||||
<a id="profile-title" class="icon border article" title="$title" onclick="jotTitle(); return false;"></a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="profile-jot-submit-wrapper" style="display:none;padding-left: 400px;">
|
|
||||||
<input type="submit" id="profile-jot-submit" name="submit" value="$share" />
|
|
||||||
<div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" >
|
|
||||||
<a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon $lockstate sharePerms" title="$permset"></a>$bang</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="profile-jot-plugin-wrapper" style="display: none;">
|
|
||||||
$jotplugins
|
|
||||||
</div>
|
|
||||||
<div id="profile-jot-tools-end"></div>
|
|
||||||
|
|
||||||
<div style="display: none;">
|
|
||||||
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
|
|
||||||
$acl
|
|
||||||
<hr style="clear:both"/>
|
|
||||||
<div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle" />
|
|
||||||
<div id="profile-jot-email-end"></div>
|
|
||||||
$jotnets
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="profile-jot-end"></div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
Before Width: | Height: | Size: 237 B |
|
@ -1,25 +0,0 @@
|
||||||
|
|
||||||
<form action="" method="post" >
|
|
||||||
<input type="hidden" name="auth-params" value="login" />
|
|
||||||
<div id="login-name-wrapper">
|
|
||||||
<label for="login-name" id="label-login-name">$namelabel</label>
|
|
||||||
<input type="text" maxlength="60" name="openid_url" class="$classname" id="login-name" value="" />
|
|
||||||
</div>
|
|
||||||
<div id="login-name-end" ></div>
|
|
||||||
<div id="login-password-wrapper">
|
|
||||||
<label for="login-password" id="label-login-password">$passlabel</label>
|
|
||||||
<input type="password" maxlength="60" name="password" id="login-password" value="" />
|
|
||||||
</div>
|
|
||||||
<div id="login-password-end"></div>
|
|
||||||
<div id="login-submit-wrapper" >
|
|
||||||
<input type="submit" name="submit" id="login-submit-button" value="$login" />
|
|
||||||
<a href="lostpass" title="$lostpass" id="lost-password-link" >$lostlink</a>
|
|
||||||
</div>
|
|
||||||
<div id="login-submit-end"></div>
|
|
||||||
<div id="login-extra-links">
|
|
||||||
<div id="login-extra-filler"> </div>
|
|
||||||
$register_html
|
|
||||||
</div>
|
|
||||||
<div id="login-extra-end"></div>
|
|
||||||
</form>
|
|
||||||
|
|
Before Width: | Height: | Size: 236 B |
|
@ -1,7 +0,0 @@
|
||||||
<h3>$messages</h3>
|
|
||||||
|
|
||||||
<ul class="tabs-wrapper">
|
|
||||||
<li><a href="message" class="tabs">$inbox</a></li>
|
|
||||||
<li><a href="message/sent" class="tabs">$outbox</a></li>
|
|
||||||
<li><a href="message/new" class="tabs">$new</a></li>
|
|
||||||
</ul>
|
|
Before Width: | Height: | Size: 276 B |
|
@ -1,55 +0,0 @@
|
||||||
<nav>
|
|
||||||
$langselector
|
|
||||||
|
|
||||||
<span id="banner">$banner</span>
|
|
||||||
|
|
||||||
<div id="notifications">
|
|
||||||
{{ if $nav.network }}<a id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
|
|
||||||
{{ if $nav.home }}<a id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
|
|
||||||
{{ if $nav.notifications }}<a id="notify-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
|
|
||||||
{{ if $nav.messages }}<a id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="user-menu" >
|
|
||||||
<a id="user-menu-label" onclick="openClose('user-menu-popup'); return false" href="$nav.home.0">$sitelocation</a>
|
|
||||||
|
|
||||||
<ul id="user-menu-popup"
|
|
||||||
onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')"
|
|
||||||
onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
|
|
||||||
|
|
||||||
{{ if $nav.register }}<li><a id="nav-register-link" class="nav-commlink $nav.register.2" href="$nav.register.0" title="$nav.register.1">$nav.register.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.home }}<li><a id="nav-home-link" class="nav-commlink $nav.home.2" href="$nav.home.0">$nav.home.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.network }}<li><a id="nav-network-link" class="nav-commlink $nav.network.2" href="$nav.network.0">$nav.network.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.community }}
|
|
||||||
<li><a id="nav-community-link" class="nav-commlink $nav.community.2" href="$nav.community.0" title="$nav.community.3" >$nav.community.1</a></li>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
<li><a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.1">$nav.search.1</a></li>
|
|
||||||
<li><a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.1">$nav.directory.1</a></li>
|
|
||||||
{{ if $nav.apps }}<li><a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.1">$nav.apps.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.notifications }}<li><a id="nav-notify-link" class="nav-commlink nav-sep $nav.notifications.2" href="$nav.notifications.0">$nav.notifications.1</a></li>{{ endif }}
|
|
||||||
{{ if $nav.messages }}<li><a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0">$nav.messages.1</a></li>{{ endif }}
|
|
||||||
{{ if $nav.contacts }}<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0">$nav.contacts.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.profiles }}<li><a id="nav-profiles-link" class="nav-commlink nav-sep $nav.profiles.2" href="$nav.profiles.0">$nav.profiles.1</a></li>{{ endif }}
|
|
||||||
{{ if $nav.settings }}<li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0">$nav.settings.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.manage }}<li><a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0">$nav.manage.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $nav.admin }}<li><a id="nav-admin-link" class="nav-commlink $nav.admin.2" href="$nav.admin.0">$nav.admin.1</a></li>{{ endif }}
|
|
||||||
|
|
||||||
<li><a id="nav-help-link" class="nav-link $nav.help.2" href="$nav.help.0" title="$nav.help.1">$nav.help.1</a></li>
|
|
||||||
|
|
||||||
{{ if $nav.login }}<li><a id="nav-login-link" class="nav-link $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a></li> {{ endif }}
|
|
||||||
{{ if $nav.logout }}<li><a id="nav-logout-link" class="nav-commlink nav-sep $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a></li> {{ endif }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
|
|
Before Width: | Height: | Size: 891 B |
Before Width: | Height: | Size: 6.1 KiB |
|
@ -1,40 +0,0 @@
|
||||||
<div id="live-display"></div>
|
|
||||||
<h3><a href="$album.0">$album.1</a></h3>
|
|
||||||
|
|
||||||
<div id="photo-edit-link-wrap">
|
|
||||||
{{ if $tools }}
|
|
||||||
<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
|
|
||||||
-
|
|
||||||
<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="photo-photo">
|
|
||||||
{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
|
|
||||||
<a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a>
|
|
||||||
{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="photo-photo-end"></div>
|
|
||||||
<div id="photo-caption" >$desc</div>
|
|
||||||
{{ if $tags }}
|
|
||||||
<div id="in-this-photo-text">$tags.0</div>
|
|
||||||
<div id="in-this-photo">$tags.1</div>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $edit }}$edit{{ endif }}
|
|
||||||
|
|
||||||
{{ if $likebuttons }}
|
|
||||||
<div id="photo-like-div">
|
|
||||||
$likebuttons
|
|
||||||
$like
|
|
||||||
$dislike
|
|
||||||
</div>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
$comments
|
|
||||||
|
|
||||||
$paginate
|
|
||||||
|
|
Before Width: | Height: | Size: 766 B |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 853 B |
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
<div class="profile-listing" >
|
|
||||||
<div class="profile-listing-photo-wrapper" >
|
|
||||||
<a href="profiles/$id" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-$id" src="$photo" alt="$alt" /></a>
|
|
||||||
</div>
|
|
||||||
<div class="profile-listing-photo-end"></div>
|
|
||||||
<div class="profile-listing-name" id="profile-listing-name-$id"><a href="profiles/$id" class="profile-listing-edit-link" >$profile_name</a></div>
|
|
||||||
<div class='profile-visible'>$visible</div>
|
|
||||||
</div>
|
|
||||||
<div class="profile-listing-end"></div>
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
<div class="tabs-wrapper" >
|
|
||||||
<a href="$url" id="profile-tab-status-link" class="tabs {{if $activetab==posts}}active{{endif}}" >$status</a>
|
|
||||||
<a href="$url?tab=profile" id="profile-tab-profile-link" class="tabs {{if $activetab==profile}}active{{endif}}" >$profile</a>
|
|
||||||
<a href="$phototab" id="profile-tab-photos-link" class="tabs {{if $activetab==photos}}active{{endif}}" >$photos</a>
|
|
||||||
{{ if $events }}<a href="events" id="profile-tab-events-link" class="tabs {{if $activetab==events}}active{{endif}}" >$events</a>{{ endif }}
|
|
||||||
{{ if $notes }}<a href="notes" id="profile-tab-notes-link" class="tabs {{if $activetab==notes}}active{{endif}}" >$notes</a>{{ endif }}
|
|
||||||
<div class="tabs-end"></div>
|
|
||||||
</div>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<div class="vcard">
|
|
||||||
<div class="fn label">$profile.name</div>
|
|
||||||
|
|
||||||
|
|
||||||
{{ if $pdesc }}<div class="title">$profile.pdesc</div>{{ endif }}
|
|
||||||
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="$profile.photo" alt="$profile.name"></div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{ if $location }}
|
|
||||||
<dl class="location"><dt class="location-label">$location</dt>
|
|
||||||
<dd class="adr">
|
|
||||||
{{ if $profile.address }}<div class="street-address">$profile.address</div>{{ endif }}
|
|
||||||
<span class="city-state-zip">
|
|
||||||
<span class="locality">$profile.locality</span>{{ if $profile.locality }}, {{ endif }}
|
|
||||||
<span class="region">$profile.region</span>
|
|
||||||
<span class="postal-code">$profile.postal-code</span>
|
|
||||||
</span>
|
|
||||||
{{ if $profile.country-name }}<span class="country-name">$profile.country-name</span>{{ endif }}
|
|
||||||
</dd>
|
|
||||||
</dl>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
{{ if $gender }}<dl class="mf"><dt class="gender-label">$gender</dt> <dd class="x-gender">$profile.gender</dd></dl>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $profile.pubkey }}<div class="key" style="display:none;">$profile.pubkey</div>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $marital }}<dl class="marital"><dt class="marital-label"><span class="heart">♥</span>$marital</dt><dd class="marital-text">$profile.marital</dd></dl>{{ endif }}
|
|
||||||
|
|
||||||
{{ if $homepage }}<dl class="homepage"><dt class="homepage-label">$homepage</dt><dd class="homepage-url"><a href="$profile.homepage" target="external-link">$profile.homepage</a></dd></dl>{{ endif }}
|
|
||||||
|
|
||||||
{{ inc diaspora_vcard.tpl }}{{ endinc }}
|
|
||||||
|
|
||||||
<div id="profile-extra-links">
|
|
||||||
<ul>
|
|
||||||
{{ if $connect }}
|
|
||||||
<li><a id="dfrn-request-link" href="dfrn_request/$profile.nickname">$connect</a></li>
|
|
||||||
{{ endif }}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
$contact_block
|
|
||||||
|
|
||||||
|
|
Before Width: | Height: | Size: 808 B |
|
@ -1,48 +0,0 @@
|
||||||
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
|
|
||||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
|
||||||
<div class="wall-item-info" id="wall-item-info-$id">
|
|
||||||
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
|
|
||||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
|
||||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
|
||||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" /></a>
|
|
||||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
|
||||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
|
||||||
<ul>
|
|
||||||
$item_photo_menu
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-photo-end"></div>
|
|
||||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-lock-wrapper">
|
|
||||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
|
||||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
|
||||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
|
||||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
|
||||||
</div>
|
|
||||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
|
||||||
<div class="wall-item-delete-end"></div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
|
||||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
|
||||||
<div class="wall-item-title-end"></div>
|
|
||||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-author">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
|
||||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-conv" id="wall-item-conv-$id" >
|
|
||||||
{{ if $conv }}<a href='$conv.href' id='context-$id' title='$conv.title'>$conv.title</a>{{ endif }}
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-wrapper-end"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
|
Before Width: | Height: | Size: 2.1 KiB |
|
@ -1,7 +1,33 @@
|
||||||
@import url('../testbubble/style.css');
|
@import url('../testbubble/style.css');
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
background-image: url('dbicons.png');
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background: #000000;
|
background: #000000;
|
||||||
color: #dddddd;
|
color: #dddddd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.info-message {
|
||||||
|
color: #444444;
|
||||||
|
}
|
||||||
|
|
||||||
|
#id_openid_url {
|
||||||
|
background: url(../testbubble/login-bg.gif) no-repeat #ffffff;
|
||||||
|
background-position: 0 50%;
|
||||||
|
padding-left: 18px;
|
||||||
|
width: 385px;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vevent, .eventcal {
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
.event-list-date {
|
||||||
|
color: #DDDDDD;
|
||||||
|
}
|
||||||
|
|
||||||
|
.fortunate {
|
||||||
|
color: #8888FF !important;
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?php
|
||||||
|
$a->theme_info = array(
|
||||||
|
'extends' => 'testbubble',
|
||||||
|
);
|
Before Width: | Height: | Size: 664 B |
|
@ -1,75 +0,0 @@
|
||||||
<!-- test -->
|
|
||||||
<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
|
|
||||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
|
||||||
<div class="wall-item-info" id="wall-item-info-$id">
|
|
||||||
<div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id"
|
|
||||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
|
||||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
|
||||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" />
|
|
||||||
</a>
|
|
||||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
|
||||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
|
||||||
<ul>
|
|
||||||
$item_photo_menu
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-photo-end"></div>
|
|
||||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-lock-wrapper">
|
|
||||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
|
||||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
|
||||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
|
||||||
<div class="wall-item-title-end"></div>
|
|
||||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
|
||||||
{{ if $vote }}
|
|
||||||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
|
||||||
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
|
|
||||||
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
|
|
||||||
{{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
|
|
||||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
|
||||||
</div>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $plink }}
|
|
||||||
<div class="wall-item-links-wrapper"><a href="$plink.href" title="$plink.title" target="external-link" class="icon remote-link"></a></div>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $edpost }}
|
|
||||||
<a class="editpost icon pencil" href="$edpost.0" title="$edpost.1"></a>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
{{ if $star }}
|
|
||||||
<a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
|
||||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
|
||||||
</div>
|
|
||||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
|
||||||
<div class="wall-item-delete-end"></div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wall-item-author">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
|
||||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-wrapper-end"></div>
|
|
||||||
<div class="wall-item-like" id="wall-item-like-$id">$like</div>
|
|
||||||
<div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
|
|
||||||
<div class="wall-item-comment-wrapper" >
|
|
||||||
$comment
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
|
|
||||||
<div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
|
|
||||||
<div class="wall-item-info wallwall" id="wall-item-info-$id">
|
|
||||||
<div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
|
|
||||||
<a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
|
|
||||||
<img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" style="height: 80px; width: 80px;" alt="$owner_name" /></a>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
|
|
||||||
<div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id"
|
|
||||||
onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
|
|
||||||
onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
|
|
||||||
<img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" style="height: 80px; width: 80px;" alt="$name" /></a>
|
|
||||||
<span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
|
|
||||||
<div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
|
|
||||||
<ul>
|
|
||||||
$item_photo_menu
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-photo-end"></div>
|
|
||||||
<div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-lock-wrapper">
|
|
||||||
{{ if $lock }}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,$id);" /></div>
|
|
||||||
{{ else }}<div class="wall-item-lock"></div>{{ endif }}
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-tools" id="wall-item-tools-$id">
|
|
||||||
{{ if $vote }}
|
|
||||||
<div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
|
|
||||||
<a href="#" class="icon like" title="$vote.like.0" onclick="dolike($id,'like'); return false"></a>
|
|
||||||
<a href="#" class="icon dislike" title="$vote.dislike.0" onclick="dolike($id,'dislike'); return false"></a>
|
|
||||||
{{ if $vote.share }}<a href="#" class="icon recycle wall-item-share-buttons" title=""$vote.share.0" onclick="jotShare($id); return false"></a>{{ endif }}
|
|
||||||
<img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
|
|
||||||
</div>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $plink }}
|
|
||||||
<div class="wall-item-links-wrapper"><a href="$plink.href" title="$plink.title" target="external-link" class="icon remote-link"></a></div>
|
|
||||||
{{ endif }}
|
|
||||||
{{ if $edpost }}
|
|
||||||
<a class="editpost icon pencil" href="$edpost.0" title="$edpost.1"></a>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
{{ if $star }}
|
|
||||||
<a href="#" id="starred-$id" onclick="dostar($id); return false;" class="star-item icon $isstarred" title="$star.toggle"></a>
|
|
||||||
{{ endif }}
|
|
||||||
|
|
||||||
<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
|
|
||||||
{{ if $drop.dropping }}<a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$drop.delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{ endif }}
|
|
||||||
</div>
|
|
||||||
{{ if $drop.dropping }}<input type="checkbox" onclick="checkboxhighlight(this);" title="$drop.select" class="item-select" name="itemselected[]" value="$id" />{{ endif }}
|
|
||||||
<div class="wall-item-delete-end"></div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-content" id="wall-item-content-$id" >
|
|
||||||
<div class="wall-item-title" id="wall-item-title-$id">$title</div>
|
|
||||||
<div class="wall-item-title-end"></div>
|
|
||||||
<div class="wall-item-body" id="wall-item-body-$id" >$body</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-author">
|
|
||||||
<a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
|
|
||||||
<div class="wall-item-ago" id="wall-item-ago-$id">$ago</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wall-item-wrapper-end"></div>
|
|
||||||
<div class="wall-item-like" id="wall-item-like-$id">$like</div>
|
|
||||||
<div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
|
|
||||||
<div class="wall-item-comment-wrapper" >
|
|
||||||
$comment
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wall-item-outside-wrapper-end$indent" ></div>
|
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
{{ endif }}
|
{{ endif }}
|
||||||
{{ if $nav.notifications }}
|
{{ if $nav.notifications }}
|
||||||
<a id="nav-notify-link" class="nav-commlink $nav.notifications.2 $sel.notifications" href="$nav.notifications.0" title="$nav.notifications.3" >$nav.notifications.1</a>
|
<a id="nav-notify-link" class="nav-commlink $nav.notifications.2 $sel.notifications" href="$nav.notifications.0" title="$nav.notifications.3" >$nav.notifications.1</a>
|
||||||
<span id="notify-update" class="nav-ajax-left"></span>
|
<span id="intro-update" class="nav-ajax-left"></span>
|
||||||
{{ endif }}
|
{{ endif }}
|
||||||
{{ if $nav.messages }}
|
{{ if $nav.messages }}
|
||||||
<a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0 $sel.messages" title="$nav.messages.3" >$nav.messages.1</a>
|
<a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0 $sel.messages" title="$nav.messages.3" >$nav.messages.1</a>
|
||||||
|
|
|
@ -1559,6 +1559,8 @@ input#dfrn-url {
|
||||||
display:block!important;
|
display:block!important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#acl-wrapper {
|
#acl-wrapper {
|
||||||
width: 690px;
|
width: 690px;
|
||||||
float:left;
|
float:left;
|
||||||
|
@ -1917,6 +1919,10 @@ a.mail-list-link {
|
||||||
float: left;
|
float: left;
|
||||||
width: 175px;
|
width: 175px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#photos-upload-noshare {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
#photos-upload-existing-album-text {
|
#photos-upload-existing-album-text {
|
||||||
float: left;
|
float: left;
|
||||||
width: 175px;
|
width: 175px;
|
||||||
|
|
124
zot.txt
|
@ -1,7 +1,7 @@
|
||||||
This is the Zot! social communications protocol.
|
This is the Zot! social communications protocol.
|
||||||
|
|
||||||
Specification revision: 1
|
Specification revision: 1
|
||||||
15 September 2011
|
2 October 2011
|
||||||
|
|
||||||
Mike Macgirvin
|
Mike Macgirvin
|
||||||
This specification is public domain.
|
This specification is public domain.
|
||||||
|
@ -78,16 +78,21 @@ zot:env
|
||||||
*******
|
*******
|
||||||
|
|
||||||
This consists of RFC822-style header fields representing the sender and
|
This consists of RFC822-style header fields representing the sender and
|
||||||
recipient(s). Example:
|
recipient(s). Line lengths have no defined limit and RFC822 continuation
|
||||||
|
lines are not supported. If an inbound server is not able to process an
|
||||||
|
envelope or post due to size constraints, it SHOULD return a
|
||||||
|
"413 Entity too large" HTTP response.
|
||||||
|
|
||||||
From: bob@example.com
|
Example:
|
||||||
Sender: bob@example.com
|
|
||||||
To: alice@example.com
|
|
||||||
|
|
||||||
Both "From:" and "Sender:" MUST be provided, and represent a webfinger
|
Z-From: zot:bob@example.com
|
||||||
address of the author and sender respectively. The webfinger address for
|
Z-Sender: zot:bob@example.com
|
||||||
the From address MUST contain a discoverable salmon public key that
|
Z-To: zot:alice@example.com
|
||||||
is needed to verify the enclosed salmon data. Sender is used to indicate
|
|
||||||
|
Both "Z-From:" and "Z-Sender:" MUST be provided, and represent a single
|
||||||
|
webfinger address of the author and sender respectively. The webfinger
|
||||||
|
address for the From address MUST contain a discoverable salmon public key
|
||||||
|
which is needed to verify the enclosed salmon data. Sender is used to indicate
|
||||||
the webfinger identity responsible for transmitting this message. From
|
the webfinger identity responsible for transmitting this message. From
|
||||||
indicates the message author.
|
indicates the message author.
|
||||||
|
|
||||||
|
@ -95,46 +100,91 @@ In web-based social systems, a reply to a message SHOULD be conveyed to all of
|
||||||
the original message participants. Only the author of the original message
|
the original message participants. Only the author of the original message
|
||||||
may know all the recipients (such as those contained in Bcc: elements). The
|
may know all the recipients (such as those contained in Bcc: elements). The
|
||||||
author of a message always provides 'From'. They MUST duplicate this
|
author of a message always provides 'From'. They MUST duplicate this
|
||||||
information as 'Sender'.
|
information as 'Sender' when posting a followup message.
|
||||||
|
|
||||||
A reply to a given message MUST be sent to the original From address, and MAY
|
A reply to a given message MUST be sent to the From address of the original
|
||||||
be sent to any additional addresses in the recipient list. The original author
|
post, and MAY be sent to any additional addresses in the recipient list. The
|
||||||
MUST send the reply to all known recipients of the original message, with
|
original post author MUST send the reply to all known recipients of the
|
||||||
their webfinger identity as Sender, and the comment/reply author as From.
|
original message, with their webfinger identity as Sender, and the
|
||||||
|
comment/reply author as From.
|
||||||
|
|
||||||
Receiving agents SHOULD validate the From identity as the signer of the salmon
|
Receiving agents SHOULD validate the From identity as the signer of the salmon
|
||||||
magic envelope, and MAY reject it. They SHOULD also verify the Sender signature
|
magic envelope, and MAY reject it. They SHOULD also verify the Sender signature
|
||||||
of the zot packet if it is different than the salmon signature. They MAY
|
of the zot packet if it is different than the salmon signature. They MAY
|
||||||
reject the message if the Sender is not allowed in their "friend list", or if
|
reject the message if the Sender is not allowed in their "friend list", or if
|
||||||
they do not have a suitable relationship with the Sender, or if either
|
they do not have a suitable relationship with the Sender, or if either
|
||||||
signature fails to validate.
|
signature fails to validate. Rejected messages for one of these reasons SHOULD
|
||||||
|
be indicated with a "400 Bad Request" HTTP response.
|
||||||
|
|
||||||
|
|
||||||
To: *
|
Z-To: *
|
||||||
|
|
||||||
indicates a public message with no specifically enumerated recipients.
|
indicates a public message with no specifically enumerated recipients.
|
||||||
|
|
||||||
The fields To:, Cc:, and/or Bcc: MAY be present. At least one recipient field
|
The fields Z-To: and/or Z-Bcc: MAY be present. At least one recipient field
|
||||||
MUST be present. These fields may use the entire syntax specified by RFC822,
|
MUST be present.
|
||||||
for example:
|
|
||||||
|
|
||||||
To: "Bob Smith" <bob@example.com>, "Alice Jones" <alice@example.com>
|
Z-To: zot:bob@example.com, zot:alice@example.com, mailto:dave@example.com
|
||||||
|
Z-Bcc: zot:https://example.com/profile/richard
|
||||||
|
|
||||||
is a valid entry. A zot envelope is UTF-8 encoded, which differs from RFC822.
|
are valid entries. Adresses are comma separated and individual entries MUST NOT
|
||||||
The host component MUST be US-ASCII, with punycode translation of
|
contain commas. There MAY be any number of ASCII space characters between
|
||||||
internationalised domain names applied.
|
entries for legibility. Header lines are terminated with a linefeed character
|
||||||
|
(ASCII 0x0A).
|
||||||
|
|
||||||
The entire envelope is then encrypted using alg with env_key and env_iv and
|
This specification provides the following foreign protocol address prefixes
|
||||||
|
for use in Z-To: or Z-Bcc: elements:
|
||||||
|
|
||||||
|
zot: - normal zot delivery using webfinger or LRDD resolvable address
|
||||||
|
ostatus: - normal OStatus delivery using webfinger or LRDD resovable address
|
||||||
|
diaspora: - Diaspora network delivery using webfinger address
|
||||||
|
facebook: - Facebook profile page URL
|
||||||
|
twitter: - Twitter personal page URL without AJAX '#!' fragment
|
||||||
|
mailto: - email RFC822/ESMTP address
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
twitter:http://twitter.com/bjensen
|
||||||
|
facebook:http://facebook.com/profile.php?id=000000001
|
||||||
|
|
||||||
|
Foreign protocol addresses which have not been defined in this specification
|
||||||
|
or future revisions of this specification and which are unknown to the
|
||||||
|
recipient delivery process MAY be ignored.
|
||||||
|
|
||||||
|
In cases where an address may contain either a webfinger or LRDD address, the
|
||||||
|
webfinger address SHOULD be used preferentially.
|
||||||
|
|
||||||
|
|
||||||
|
Z-Bcc:
|
||||||
|
******
|
||||||
|
|
||||||
|
The Z-Bcc element may contain one or more addresses which are hidden from end
|
||||||
|
user presentation. A zot receiving system MUST NOT store or allow for
|
||||||
|
the display of the Bcc information. Implementations which require extreme
|
||||||
|
privacy SHOULD send individual posts to each of the Bcc: recipients containing
|
||||||
|
only a single address. They MAY send all Bcc: posts using bulk delivery,
|
||||||
|
however this may have privacy implications as there is no guarantee a
|
||||||
|
receiving system will not log, store, or otherwise reveal the contents of the
|
||||||
|
Bcc recipient list.
|
||||||
|
|
||||||
|
Z-To: addresses MAY be shown to an end user.
|
||||||
|
|
||||||
|
|
||||||
|
Envelope encryption
|
||||||
|
*******************
|
||||||
|
|
||||||
|
|
||||||
|
The entire envelope is encrypted using alg with env_key and env_iv and
|
||||||
base64url encoded for transmission.
|
base64url encoded for transmission.
|
||||||
|
|
||||||
The zot envelope MAY include remote addresses. A zot delivery agent MUST parse
|
The zot envelope MAY include remote addresses. A zot inbound delivery agent
|
||||||
all addresses and determine whether a delivery address to the current endpoint
|
MUST parse the envelope and determine whether a delivery address to the
|
||||||
is valid. This may be the result of:
|
current endpoint is valid. This may be the result of:
|
||||||
|
|
||||||
1. An address contains the public message wildcard '*'
|
1. An address contains the public message wildcard '*'
|
||||||
|
|
||||||
2. The current endpoint is a personal endpoint and one of the recipients
|
2. The current endpoint is a personal endpoint and one of the recipients
|
||||||
listed in the To:, Cc:, or Bcc: addresses matches the webfinger address of
|
listed in the Z-To: or Z-Bcc: addresses matches the webfinger address of
|
||||||
the "owner" of the endpoint.
|
the "owner" of the endpoint.
|
||||||
|
|
||||||
3. The current endpoint is a bulk delivery endpoint. The bulk delivery
|
3. The current endpoint is a bulk delivery endpoint. The bulk delivery
|
||||||
|
@ -219,7 +269,8 @@ We anticipate this specification will in the future allow for a close variant
|
||||||
of "message/rfc822" and which may include MIME. This may also be used to
|
of "message/rfc822" and which may include MIME. This may also be used to
|
||||||
embed alternate message formats and protocols such as
|
embed alternate message formats and protocols such as
|
||||||
"application/x-diaspora+xml". If a delivery agent is unable to provide any
|
"application/x-diaspora+xml". If a delivery agent is unable to provide any
|
||||||
acceptable data format, the delivery MUST be terminated/cancelled.
|
acceptable data format to the remote system, the delivery to that system MUST
|
||||||
|
be terminated/cancelled.
|
||||||
|
|
||||||
Foreign Messages
|
Foreign Messages
|
||||||
****************
|
****************
|
||||||
|
@ -233,9 +284,18 @@ systems MAY reject foreign messages.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**********************
|
|
||||||
* Zid authentication *
|
|
||||||
**********************
|
*******************************
|
||||||
|
* Zid (Zot-ID) authentication *
|
||||||
|
*******************************
|
||||||
|
|
||||||
|
This section of the document is considered separate from the delivery
|
||||||
|
specification precding it and represents a different protocol, which is
|
||||||
|
currently incomplete. This will be split off into another document in the
|
||||||
|
future, but is presented here as a synergistic component of the Zot network
|
||||||
|
model.
|
||||||
|
|
||||||
|
|
||||||
URLs may be present within a zot message which refer to private and/or
|
URLs may be present within a zot message which refer to private and/or
|
||||||
protected resources. Zid uses OpenID to gain access to these protected
|
protected resources. Zid uses OpenID to gain access to these protected
|
||||||
|
|