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'); | ||||
|  | ||||
| define ( 'FRIENDIKA_PLATFORM',     'Free Friendika'); | ||||
| define ( 'FRIENDIKA_VERSION',      '2.3.1120' ); | ||||
| define ( 'FRIENDIKA_VERSION',      '2.3.1121' ); | ||||
| define ( 'DFRN_PROTOCOL_VERSION',  '2.21'    ); | ||||
| define ( 'DB_UPDATE_VERSION',      1093      ); | ||||
| define ( 'DB_UPDATE_VERSION',      1094      ); | ||||
|  | ||||
| define ( 'EOL',                    "<br />\r\n"     ); | ||||
| 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` ( | ||||
|   `id` int(10) unsigned NOT NULL AUTO_INCREMENT, | ||||
|   `uid` int(10) unsigned NOT NULL, | ||||
|   `visible` tinyint(1) NOT NULL DEFAULT '0', | ||||
|   `deleted` tinyint(1) NOT NULL DEFAULT '0', | ||||
|   `name` char(255) NOT NULL, | ||||
|   PRIMARY KEY (`id`) | ||||
| @@ -632,3 +633,12 @@ CREATE TABLE IF NOT EXISTS `search` ( | ||||
| INDEX ( `uid` ), | ||||
| INDEX ( `term` ) | ||||
| ) 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']; | ||||
| 		$updated = $r[0]['edited']; | ||||
|  | ||||
| 		if(! $parent_id) | ||||
| 			return; | ||||
|  | ||||
|  | ||||
| 		$items = q("SELECT `item`.*, `sign`.`signed_text`,`sign`.`signature`,`sign`.`signer`  | ||||
|   | ||||
| @@ -123,6 +123,9 @@ function notifier_run($argv, $argc){ | ||||
| 		$uid = $r[0]['uid']; | ||||
| 		$updated = $r[0]['edited']; | ||||
|  | ||||
| 		if(! $parent_id) | ||||
| 			return; | ||||
|  | ||||
| 		$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", | ||||
| 			intval($parent_id) | ||||
|   | ||||
							
								
								
									
										10
									
								
								js/main.js
									
									
									
									
									
								
							
							
						
						| @@ -95,6 +95,16 @@ | ||||
| 			if(home == 0) { home = '';  $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } | ||||
| 			$('#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') | ||||
| 			notif = eNotif.attr('count'); | ||||
| 			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("Expires: " . gmdate("D, d M Y H:i:s", time() + (3600*24)) . " GMT"); | ||||
| 	header("Cache-Control: max-age=" . (3600*24)); | ||||
|   | ||||
| @@ -92,15 +92,11 @@ EOT; | ||||
|  | ||||
| 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.php: photos_post(): $_FILES key: ' . $key . ' val: ' . $val , 'LOGGER_DEBUG'); | ||||
| 	} | ||||
| 	logger('mod_photos: REQUEST ' . print_r($_REQUEST,true), LOGGER_DATA); | ||||
| 	logger('mod_photos: FILES '   . print_r($_FILES,true), LOGGER_DATA); | ||||
|  | ||||
| 	$can_post  = false; | ||||
| 	$visitor   = 0; | ||||
| @@ -585,6 +581,9 @@ function photos_post(&$a) { | ||||
| 	else | ||||
| 		$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_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']))); | ||||
| @@ -892,6 +891,7 @@ function photos_content(&$a) { | ||||
| 			'$nickname' => $a->data['user']['nickname'], | ||||
| 			'$newalbum' => t('New album name: '), | ||||
| 			'$existalbumtext' => t('or existing album name: '), | ||||
| 			'$nosharetext' => t('Do not show a status post for this upload'), | ||||
| 			'$albumselect' => template_escape($albumselect), | ||||
| 			'$permissions' => t('Permissions'), | ||||
| 			'$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){ | ||||
| 			$notsxml = '<note href="%s" name="%s" url="%s" photo="%s" date="%s">%s</note>'; | ||||
| 			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 | ||||
|  | ||||
| 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 ( `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 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" > | ||||
| 		<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> | ||||
							
								
								
									
										
											BIN
										
									
								
								view/theme/darkbubble/dbicons.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 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'); | ||||
|  | ||||
| .icon { | ||||
| 	background-image: url('dbicons.png'); | ||||
| } | ||||
|  | ||||
| body { | ||||
| 	background: #000000; | ||||
| 	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; | ||||
| } | ||||
							
								
								
									
										4
									
								
								view/theme/darkbubble/theme.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -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 }} | ||||
| 	{{ 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> | ||||
| 	<span id="notify-update" class="nav-ajax-left"></span> | ||||
| 	<span id="intro-update" class="nav-ajax-left"></span> | ||||
| 	{{ endif }} | ||||
| 	{{ 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> | ||||
|   | ||||
| @@ -1559,6 +1559,8 @@ input#dfrn-url { | ||||
| 	display:block!important; | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| #acl-wrapper { | ||||
| 	width: 690px; | ||||
| 	float:left; | ||||
| @@ -1917,6 +1919,10 @@ a.mail-list-link { | ||||
| 	float: left; | ||||
| 	width: 175px; | ||||
| } | ||||
|  | ||||
| #photos-upload-noshare { | ||||
| 	margin-bottom: 10px; | ||||
| } | ||||
| #photos-upload-existing-album-text { | ||||
| 	float: left; | ||||
| 	width: 175px; | ||||
|   | ||||
							
								
								
									
										124
									
								
								zot.txt
									
									
									
									
									
								
							
							
						
						| @@ -1,7 +1,7 @@ | ||||
| This is the Zot! social communications protocol.  | ||||
|  | ||||
| Specification revision: 1 | ||||
| 15 September 2011 | ||||
| 2 October 2011 | ||||
|  | ||||
| Mike Macgirvin | ||||
| This specification is public domain. | ||||
| @@ -78,16 +78,21 @@ zot:env | ||||
| ******* | ||||
|  | ||||
| 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 | ||||
| Sender: bob@example.com | ||||
| To: alice@example.com | ||||
| Example: | ||||
|  | ||||
| Both "From:" and "Sender:" MUST be provided, and represent a webfinger  | ||||
| address of the author and sender respectively. The webfinger address for | ||||
| the From address MUST contain a discoverable salmon public key that | ||||
| is needed to verify the enclosed salmon data. Sender is used to indicate | ||||
| Z-From: zot:bob@example.com | ||||
| Z-Sender: zot:bob@example.com | ||||
| Z-To: zot:alice@example.com | ||||
|  | ||||
| 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 | ||||
| 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  | ||||
| may know all the recipients (such as those contained in Bcc: elements). The  | ||||
| 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 | ||||
| be sent to any additional addresses in the recipient list. The original author | ||||
| MUST send the reply to all known recipients of the original message, with  | ||||
| their webfinger identity as Sender, and the comment/reply author as From.    | ||||
| A reply to a given message MUST be sent to the From address of the original | ||||
| post, and MAY be sent to any additional addresses in the recipient list. The | ||||
| original post author MUST send the reply to all known recipients of the  | ||||
| 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 | ||||
| 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  | ||||
| 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 | ||||
| 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. | ||||
|  | ||||
| The fields To:, Cc:, and/or Bcc: MAY be present. At least one recipient field | ||||
| MUST be present. These fields may use the entire syntax specified by RFC822, | ||||
| for example: | ||||
| The fields Z-To: and/or Z-Bcc: MAY be present. At least one recipient field | ||||
| MUST be present. | ||||
|  | ||||
| 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. | ||||
| The host component MUST be US-ASCII, with punycode translation of  | ||||
| internationalised domain names applied. | ||||
| are valid entries. Adresses are comma separated and individual entries MUST NOT | ||||
| contain commas. There MAY be any number of ASCII space characters between | ||||
| 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. | ||||
|  | ||||
| The zot envelope MAY include remote addresses. A zot delivery agent MUST parse | ||||
| all addresses and determine whether a delivery address to the current endpoint | ||||
| is valid. This may be the result of: | ||||
| The zot envelope MAY include remote addresses. A zot inbound delivery agent | ||||
| MUST parse the envelope and determine whether a delivery address to the | ||||
| current endpoint is valid. This may be the result of: | ||||
|  | ||||
| 	1. An address contains the public message wildcard '*' | ||||
|  | ||||
| 	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. | ||||
|  | ||||
| 	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  | ||||
| embed alternate message formats and protocols such as  | ||||
| "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 | ||||
| **************** | ||||
| @@ -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 | ||||
| protected resources. Zid uses OpenID to gain access to these protected | ||||
|   | ||||