Merge branch 'dev' of https://framagit.org/hubzilla/core into dev
This commit is contained in:
		| @@ -20,6 +20,10 @@ class Magic extends \Zotlabs\Web\Controller { | ||||
| 		$owa  = ((x($_REQUEST,'owa'))  ? intval($_REQUEST['owa'])  : 0); | ||||
| 		$delegate = ((x($_REQUEST,'delegate')) ? $_REQUEST['delegate']  : ''); | ||||
|  | ||||
| 		// Apache(?) appears to perform an htmlentities() operation on this variable | ||||
|  | ||||
| 		$dest = html_entity_decode($dest);	 | ||||
|  | ||||
| 		$parsed = parse_url($dest); | ||||
| 		if(! $parsed) { | ||||
| 			if($test) { | ||||
| @@ -139,6 +143,9 @@ class Magic extends \Zotlabs\Web\Controller { | ||||
|  | ||||
| 			if($owa) { | ||||
|  | ||||
| 				$dest = strip_zids($dest); | ||||
| 				$dest = strip_query_param($dest,'f'); | ||||
|  | ||||
| 				$headers = []; | ||||
| 				$headers['Accept'] = 'application/x-zot+json' ; | ||||
| 				$headers['X-Open-Web-Auth'] = random_string(); | ||||
|   | ||||
| @@ -12,12 +12,13 @@ class Sources extends \Zotlabs\Web\Controller { | ||||
| 			return ''; | ||||
| 	 | ||||
| 		$source = intval($_REQUEST['source']); | ||||
| 		$xchan = $_REQUEST['xchan']; | ||||
| 		$xchan = escape_tags($_REQUEST['xchan']); | ||||
| 		$abook = intval($_REQUEST['abook']); | ||||
| 		$words = $_REQUEST['words']; | ||||
| 		$words = escape_tags($_REQUEST['words']); | ||||
| 		$resend = intval($_REQUEST['resend']); | ||||
| 		$frequency = $_REQUEST['frequency']; | ||||
| 		$name = $_REQUEST['name']; | ||||
| 		$tags = $_REQUEST['tags']; | ||||
| 		$name = escape_tags($_REQUEST['name']); | ||||
| 		$tags = escape_tags($_REQUEST['tags']); | ||||
| 	 | ||||
| 		$channel = \App::get_channel(); | ||||
| 	 | ||||
| @@ -38,6 +39,8 @@ class Sources extends \Zotlabs\Web\Controller { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		set_abconfig(local_channel(),$xchan, 'system','rself',$resend); | ||||
|  | ||||
| 		if(! $source) { | ||||
| 			$r = q("insert into source ( src_channel_id, src_channel_xchan, src_xchan, src_patt, src_tag ) | ||||
| 				values ( %d, '%s', '%s', '%s', '%s' ) ", | ||||
| @@ -110,7 +113,7 @@ class Sources extends \Zotlabs\Web\Controller { | ||||
| 				'$words' => array( 'words', t('Only import content with these words (one per line)'),'',t('Leave blank to import all public content')), | ||||
| 				'$name' => array( 'name', t('Channel Name'), '', ''), | ||||
| 				'$tags' => array('tags', t('Add the following categories to posts imported from this source (comma separated)'),'',t('Optional')), | ||||
|  | ||||
| 				'$resend' => [ 'resend', t('Resend posts with this channel as author'), 0, t('Copyrights may apply'), [ t('No'), t('Yes') ]],   | ||||
| 				'$submit' => t('Submit') | ||||
| 			)); | ||||
| 			return $o; | ||||
| @@ -145,6 +148,8 @@ class Sources extends \Zotlabs\Web\Controller { | ||||
| 				'$xchan' => $r[0]['src_xchan'], | ||||
| 				'$abook' => $x[0]['abook_id'], | ||||
| 				'$tags' => array('tags', t('Add the following categories to posts imported from this source (comma separated)'),$r[0]['src_tag'],t('Optional')), | ||||
| 				'$resend' => [ 'resend', t('Resend posts with this channel as author'), get_abconfig(local_channel(), $r[0]['xchan_hash'],'system','rself'), t('Copyrights may apply'), [ t('No'), t('Yes') ]],   | ||||
|  | ||||
| 				'$name' => array( 'name', t('Channel Name'), $r[0]['xchan_name'], ''), | ||||
| 				'$submit' => t('Submit') | ||||
| 			)); | ||||
|   | ||||
| @@ -722,14 +722,13 @@ class Directory extends DAV\Node implements DAV\ICollection, DAV\IQuota, DAV\IMo | ||||
| 	function ChannelList(&$auth) { | ||||
| 		$ret = array(); | ||||
|  | ||||
| 		$r = q("SELECT channel_id, channel_address FROM channel WHERE channel_removed = 0 | ||||
| 			AND channel_system = 0 AND (channel_pageflags & %d) = 0", | ||||
| 		$r = q("SELECT channel_id, channel_address, profile.publish FROM channel left join profile on profile.uid = channel.channel_id WHERE channel_removed = 0 AND channel_system = 0 AND (channel_pageflags & %d) = 0", | ||||
| 			intval(PAGE_HIDDEN) | ||||
| 		); | ||||
|  | ||||
| 		if ($r) { | ||||
| 			foreach ($r as $rr) { | ||||
| 				if (perm_is_allowed($rr['channel_id'], $auth->observer, 'view_storage')) { | ||||
| 				if (perm_is_allowed($rr['channel_id'], $auth->observer, 'view_storage') && $rr['publish']) { | ||||
| 					logger('found channel: /cloud/' . $rr['channel_address'], LOGGER_DATA); | ||||
| 					// @todo can't we drop '/cloud'? It gets stripped off anyway in RedDirectory | ||||
| 					$ret[] = new Directory('/cloud/' . $rr['channel_address'], $auth); | ||||
|   | ||||
| @@ -331,16 +331,6 @@ empty: | ||||
|  | ||||
|     util/config system directory_server "" | ||||
|  | ||||
| ### Upgrading from RedMatrix to $Projectname | ||||
|  | ||||
| #### How to migrate an individual channel from RedMatrix to $Projectname | ||||
|  | ||||
| 1. Clone the channel by opening an account on a $Projectname hub and performing a basic import (not content) from the original RedMatrix hub. Give your new clone time to sync connections and settings. | ||||
| 1. Export individual channel content from your RedMatrix hub to a set of JSON text files using the red.hub/uexport tool. Do this in monthly increments if necessary. | ||||
| 1. Import the JSON data files sequentially in chronological order into the $Projectname clone using the new.hub/import_items tool. | ||||
| 1. Inform your Friendica and Diaspora contacts that your channel moves. They need to reconnect to your new address.   | ||||
| 1. After successful import (check!) delete your channel on the old RedMatrix Server. | ||||
| 1. On the $Projectname server visit new.hub/locs and upgrade to your channel to a primary one. And when the old Redmatrix server is still listed delete them here as well. Press "Sync" to inform all other server in the grid. | ||||
|  | ||||
| ### Administration | ||||
|  | ||||
|   | ||||
| @@ -1,49 +1,28 @@ | ||||
|  | ||||
| Roadmap | ||||
|  | ||||
|  | ||||
| Roadmap for $Projectname V3 | ||||
| Platform | ||||
|  | ||||
| *HZ = Hubzilla repository | ||||
| 	Convert E2EE and select Javascript resources to dynamic loading using jQuery.getScript() [or other methods]. | ||||
|  | ||||
| Webpages | ||||
|  | ||||
| Crypto | ||||
| 	Convert E2EE to dynamic loading (on demand) using jQuery.getScript() [or other methods] to only load encryption libs when you require them. This should also support multiple encryption libraries (e.g. SJCL, others) triggered from the choice of algorithm and remain pluggable. | ||||
|  | ||||
| Subscriptions and business models | ||||
| 	Build enough into core(/addons) to generate income (or at least try and cover costs) out of the box  | ||||
|  | ||||
| 	Resolve the "every photo has an item" confusion, perhaps every file should also - but only if we can explain it and separate them conceptually. | ||||
|  | ||||
| Migration tools | ||||
| 	Friendica importer | ||||
| 	Diaspora importer (channel and connection import done, conversations and photos still in progress and waiting for support from Diaspora) | ||||
|  | ||||
| Webpage design UI improvements | ||||
| 	If practical, separate "conversation" sub-themes from overall themes so one can choose different conversation and content layouts within a base theme.  | ||||
| 	Make webpage building easy, with point-n-click selectors to build PDLs | ||||
| 	bring back WYSIWYG, which ideally requires a JS abstraction layer so we can use any editor and change it based on mimetype | ||||
|  | ||||
| Social Networking Federation | ||||
| 	Friendica native mode? | ||||
| 	Pump.io? | ||||
| 	Others? | ||||
|  | ||||
| Lists | ||||
| 	Create a list object to contain arbitrary things for system use | ||||
| 	Create a list object to contain arbitrary things for personal use | ||||
|  | ||||
| Events | ||||
|  | ||||
| 	Recurring events | ||||
| 	Integrate Hubzilla events with CalDAV | ||||
|  | ||||
| Zot | ||||
| 	Provide a way to sync web resources. This could be built on DAV except for preserving resource naming (guids) instead of filenames.  | ||||
|  | ||||
| API extensions | ||||
| 	More, more, more. | ||||
| Connections | ||||
|  | ||||
| Evangelism | ||||
| 	More documentation. More, more, more. | ||||
| 	Libzot | ||||
| 	CardDAV integration with abook and profiles | ||||
|  | ||||
| DNS abstraction for V3 | ||||
| 	Allow a channel to live in an arbitrary "DNS" namespace, for instance "mike@core.hubzilla". Use our directories and zot to find the actual DNS location via redirection. This could potentially allow hubs to be hidden behind tor or alt-roots and accessible only via the matrix. | ||||
|  | ||||
| Issues manager | ||||
|  | ||||
| 	Provide easy(easier) channel move (as opposed to channel copy or clone) | ||||
|  | ||||
| @@ -1,27 +0,0 @@ | ||||
|  | ||||
| Hubzilla III | ||||
| ============ | ||||
|  | ||||
| Due: December 2017 | ||||
| Codename:  | ||||
|  | ||||
|  | ||||
| Wishlist: | ||||
|  | ||||
| - Move CalDAV/CardDAV server to core | ||||
|  | ||||
| - Integrate Hubzilla events with CalDAV | ||||
|  | ||||
| - Connection 'roles' allows you to select different permission roles for your connections; such as follower, friend, contributor, etc.  | ||||
|  | ||||
| - CardDAV integration with abook and profiles | ||||
|  | ||||
| - App tray | ||||
|  | ||||
| - issues manager | ||||
|  | ||||
| - wiki cloning | ||||
|  | ||||
| - provide easy channel move (as opposed to channel copy or clone), which is currently supported only by the basic server role. | ||||
|  | ||||
| - provide RSA keychange operation; which cannot affect the primary identity (which is based on the channel keys), so add a secondary dynamic key pair which will be used for all other operations and can be upgraded or revoked at any time.   | ||||
| @@ -1,29 +0,0 @@ | ||||
| [h1]Project Roadmap V4[/h1] | ||||
|  | ||||
| [h2]Hubzilla 2.0 - code name "Universal Thunder"[/h2] | ||||
|  | ||||
| [h3]Project Core Development[/h3] | ||||
|  | ||||
| Goals/Highlights: | ||||
|  | ||||
|  | ||||
| Focus on visual website design tools, widgets, and sharing mechanisms | ||||
|  | ||||
| [x] App organisation. | ||||
|  | ||||
| [x] Conversion of core application to a composer format living under the namespace "Zotlabs" | ||||
|  | ||||
| [x] Conversion of Modules to a more general purpose Controllers layout with DB/memory based | ||||
| controller routing as opposed to filesystem routing. | ||||
|  | ||||
| [x] (partial) Conversion of core Zot Protocol to a class library | ||||
|   | ||||
| [x] Abstraction of nomadic identity so that sending/receiving to/from singleton networks to/from any clone works flawlessly - [b]provided[/b] the clone physically connected to that singleton identity is up.  | ||||
|  | ||||
| [h3]Community Development[/h3] | ||||
|  | ||||
| [x] CalDAV/CardDAV | ||||
|  | ||||
| E-Commerce | ||||
|  | ||||
| Auto Updater | ||||
| @@ -373,23 +373,24 @@ function contact_remove($channel_id, $abook_id) { | ||||
| 	if(intval($abook['abook_self'])) | ||||
| 		return false; | ||||
|  | ||||
|  | ||||
| 	$r = q("select id from item where (owner_xchan = '%s' or author_xchan = '%s') and uid = %d and item_retained = 0 and item_starred = 0", | ||||
| 		dbesc($abook['abook_xchan']), | ||||
| 		dbesc($abook['abook_xchan']), | ||||
| 		intval($channel_id) | ||||
| 	); | ||||
| 	if($r) { | ||||
| 		$r = fetch_post_tags($r,true); | ||||
|  | ||||
| 		foreach($r as $rr) { | ||||
| 			$terms = get_terms_oftype($item['term'],TERM_FILE); | ||||
| 			if(! $terms) { | ||||
| 			$x = q("select uid from term where otype = %d and oid = %d ttype = %d limit 1", | ||||
| 				intval(TERM_OBJ_POST), | ||||
| 				intval($rr['id']), | ||||
| 				intval(TERM_FILE) | ||||
| 			); | ||||
| 			if($x) { | ||||
| 				continue; | ||||
| 			} | ||||
| 			drop_item($rr['id'],false); | ||||
| 		} | ||||
| 	} | ||||
| 	} | ||||
|  | ||||
| 	 | ||||
| 	q("delete from abook where abook_id = %d and abook_channel = %d", | ||||
| 		intval($abook['abook_id']), | ||||
|   | ||||
| @@ -19,9 +19,10 @@ require_once('include/permissions.php'); | ||||
|  * | ||||
|  * @param array $item | ||||
|  * @param[out] boolean $private_envelope | ||||
|  * @param boolean $include_groups  | ||||
|  * @return array containing the recipients | ||||
|  */ | ||||
| function collect_recipients($item, &$private_envelope) { | ||||
| function collect_recipients($item, &$private_envelope,$include_groups = true) { | ||||
|  | ||||
| 	require_once('include/group.php'); | ||||
|  | ||||
| @@ -34,7 +35,12 @@ function collect_recipients($item, &$private_envelope) { | ||||
|  | ||||
| 		$allow_people = expand_acl($item['allow_cid']); | ||||
|  | ||||
| 		if($include_groups) { | ||||
| 			$allow_groups = expand_groups(expand_acl($item['allow_gid'])); | ||||
| 		} | ||||
| 		else { | ||||
| 			$allow_groups = []; | ||||
| 		} | ||||
|  | ||||
| 		$recipients = array_unique(array_merge($allow_people,$allow_groups)); | ||||
|  | ||||
| @@ -2948,6 +2954,18 @@ function start_delivery_chain($channel, $item, $item_id, $parent) { | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// This will change the author to the post owner. Useful for RSS feeds which are to be syndicated | ||||
| 		// to federated platforms which can't verify the identity of the author.  | ||||
| 		// This MAY cause you to run afoul of copyright law. | ||||
|  | ||||
| 		$rewrite_author = intval(get_abconfig($channel['channel_id'],$item['owner_xchan'],'system','rself')); | ||||
| 		if($rewrite_author) { | ||||
| 			$item['author_xchan'] = $item['owner_xchan']; | ||||
| 			if($item['owner']) { | ||||
| 				$item['author'] = $item['owner']; | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Change this copy of the post to a forum head message and deliver to all the tgroup members | ||||
| @@ -3008,8 +3026,6 @@ function start_delivery_chain($channel, $item, $item_id, $parent) { | ||||
| 	); | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
| 	if($r) | ||||
| 		Zotlabs\Daemon\Master::Summon(array('Notifier','tgroup',$item_id)); | ||||
| 	else { | ||||
|   | ||||
| @@ -8378,7 +8378,7 @@ msgstr "Afleveringsrapport" | ||||
| msgid "%d comment" | ||||
| msgid_plural "%d comments" | ||||
| msgstr[0] "%d reactie" | ||||
| msgstr[1] "%d reacties getoond" | ||||
| msgstr[1] "%d reacties" | ||||
|  | ||||
| #: ../../Zotlabs/Lib/ThreadItem.php:343 ../../Zotlabs/Lib/ThreadItem.php:344 | ||||
| #, php-format | ||||
|   | ||||
| @@ -1816,7 +1816,7 @@ App::$strings["share"] = "delen"; | ||||
| App::$strings["Delivery Report"] = "Afleveringsrapport"; | ||||
| App::$strings["%d comment"] = array( | ||||
| 	0 => "%d reactie", | ||||
| 	1 => "%d reacties getoond", | ||||
| 	1 => "%d reacties", | ||||
| ); | ||||
| App::$strings["View %s's profile - %s"] = "Profiel van %s bekijken - %s"; | ||||
| App::$strings["to"] = "aan"; | ||||
|   | ||||
| @@ -1,27 +0,0 @@ | ||||
| <div class="generic-content-wrapper-styled" id='adminpage'> | ||||
| 	<h1>{{$title}} - {{$page}}</h1> | ||||
|  | ||||
| 	<table id='server'> | ||||
| 		<thead> | ||||
| 			<tr> | ||||
| 			{{foreach $th_hubloc as $th}}<th>{{$th}}</th>{{/foreach}} | ||||
| 			</tr> | ||||
| 		</thead> | ||||
| 		<tbody> | ||||
| 			 | ||||
| 			{{foreach $hubloc as $hub}}<tr> | ||||
| 			<td>{{$hub.hubloc_id}}</td><td>{{$hub.hubloc_addr}}</td><td>{{$hub.hubloc_host}}</td><td>{{$hub.hubloc_status}}</td> | ||||
| 			<td> | ||||
| 			<form action="{{$baseurl}}/admin/hubloc" method="post"> | ||||
| 			<input type="hidden" name="hublocid" value="{{$hub.hubloc_id}}"> | ||||
| 			<input type='hidden' name='form_security_token' value='{{$form_security_token}}'> | ||||
| 			<input type='hidden' name='url' value='{{$hub.hubloc_host}}'> | ||||
| 			<input type="submit" name="check" value="check" > | ||||
| 			<input type="submit" name="repair" value="repair" ></td> | ||||
| 			</form> | ||||
| 			</tr>{{/foreach}} | ||||
| 		</tbody> | ||||
| 	</table> | ||||
|  | ||||
|  | ||||
| </div> | ||||
| @@ -1,66 +0,0 @@ | ||||
| <config> | ||||
|  <site> | ||||
|   <name>{{$config.site.name}}</name> | ||||
|   <server>{{$config.site.server}}</server> | ||||
|   <theme>default</theme> | ||||
|   <path></path> | ||||
|   <logo>{{$config.site.logo}}</logo> | ||||
|  | ||||
|   <fancy>true</fancy> | ||||
|   <language>en</language> | ||||
|   <email>{{$config.site.email}}</email> | ||||
|   <broughtby></broughtby> | ||||
|   <broughtbyurl></broughtbyurl> | ||||
|   <timezone>UTC</timezone> | ||||
|   <closed>{{$config.site.closed}}</closed> | ||||
|  | ||||
|   <inviteonly>false</inviteonly> | ||||
|   <private>{{$config.site.private}}</private> | ||||
|   <textlimit>{{$config.site.textlimit}}</textlimit> | ||||
|   <ssl>{{$config.site.ssl}}</ssl> | ||||
|   <sslserver>{{$config.site.sslserver}}</sslserver> | ||||
|   <shorturllength>30</shorturllength> | ||||
|  | ||||
| </site> | ||||
|  <license> | ||||
|   <type>cc</type> | ||||
|   <owner></owner> | ||||
|   <url>http://creativecommons.org/licenses/by/3.0/</url> | ||||
|   <title>Creative Commons Attribution 3.0</title> | ||||
|   <image>http://i.creativecommons.org/l/by/3.0/80x15.png</image> | ||||
|  | ||||
| </license> | ||||
|  <nickname> | ||||
|   <featured></featured> | ||||
| </nickname> | ||||
|  <profile> | ||||
|   <biolimit></biolimit> | ||||
| </profile> | ||||
|  <group> | ||||
|   <desclimit></desclimit> | ||||
| </group> | ||||
|  <notice> | ||||
|  | ||||
|   <contentlimit></contentlimit> | ||||
| </notice> | ||||
|  <throttle> | ||||
|   <enabled>false</enabled> | ||||
|   <count>20</count> | ||||
|   <timespan>600</timespan> | ||||
| </throttle> | ||||
|  <xmpp> | ||||
|  | ||||
|   <enabled>false</enabled> | ||||
|   <server>INVALID SERVER</server> | ||||
|   <port>5222</port> | ||||
|   <user>update</user> | ||||
| </xmpp> | ||||
|  <integration> | ||||
|   <source>StatusNet</source> | ||||
|  | ||||
| </integration> | ||||
|  <attachments> | ||||
|   <uploads>false</uploads> | ||||
|   <file_quota>0</file_quota> | ||||
| </attachments> | ||||
| </config> | ||||
| @@ -1,5 +0,0 @@ | ||||
| <users type="array"> | ||||
| 	{{foreach $users as $user}} | ||||
| 	{{include file="api_user_xml.tpl"}} | ||||
| 	{{/foreach}} | ||||
| </users> | ||||
| @@ -1,6 +0,0 @@ | ||||
| <hash> | ||||
|  <remaining-hits type="integer">{{$hash.remaining_hits}}</remaining-hits> | ||||
|  <hourly-limit type="integer">{{$hash.hourly_limit}}</hourly-limit> | ||||
|  <reset-time type="datetime">{{$hash.reset_time}}</reset-time> | ||||
|  <reset_time_in_seconds type="integer">{{$hash.resettime_in_seconds}}</reset_time_in_seconds> | ||||
| </hash> | ||||
| @@ -1,46 +0,0 @@ | ||||
| <status>{{if $status}} | ||||
|     <created_at>{{$status.created_at}}</created_at> | ||||
|     <id>{{$status.id}}</id> | ||||
|     <text>{{$status.text}}</text> | ||||
|     <source>{{$status.source}}</source> | ||||
|     <truncated>{{$status.truncated}}</truncated> | ||||
|     <in_reply_to_status_id>{{$status.in_reply_to_status_id}}</in_reply_to_status_id> | ||||
|     <in_reply_to_user_id>{{$status.in_reply_to_user_id}}</in_reply_to_user_id> | ||||
|     <favorited>{{$status.favorited}}</favorited> | ||||
|     <in_reply_to_screen_name>{{$status.in_reply_to_screen_name}}</in_reply_to_screen_name> | ||||
|     <geo>{{$status.geo}}</geo> | ||||
|     <coordinates>{{$status.coordinates}}</coordinates> | ||||
|     <place>{{$status.place}}</place> | ||||
|     <contributors>{{$status.contributors}}</contributors> | ||||
| 	<user> | ||||
| 	  <id>{{$status.user.id}}</id> | ||||
| 	  <name>{{$status.user.name}}</name> | ||||
| 	  <screen_name>{{$status.user.screen_name}}</screen_name> | ||||
| 	  <location>{{$status.user.location}}</location> | ||||
| 	  <description>{{$status.user.description}}</description> | ||||
| 	  <profile_image_url>{{$status.user.profile_image_url}}</profile_image_url> | ||||
| 	  <url>{{$status.user.url}}</url> | ||||
| 	  <protected>{{$status.user.protected}}</protected> | ||||
| 	  <followers_count>{{$status.user.followers}}</followers_count> | ||||
| 	  <profile_background_color>{{$status.user.profile_background_color}}</profile_background_color> | ||||
|   	  <profile_text_color>{{$status.user.profile_text_color}}</profile_text_color> | ||||
|   	  <profile_link_color>{{$status.user.profile_link_color}}</profile_link_color> | ||||
|   	  <profile_sidebar_fill_color>{{$status.user.profile_sidebar_fill_color}}</profile_sidebar_fill_color> | ||||
|   	  <profile_sidebar_border_color>{{$status.user.profile_sidebar_border_color}}</profile_sidebar_border_color> | ||||
|   	  <friends_count>{{$status.user.friends_count}}</friends_count> | ||||
|   	  <created_at>{{$status.user.created_at}}</created_at> | ||||
|   	  <favourites_count>{{$status.user.favourites_count}}</favourites_count> | ||||
|   	  <utc_offset>{{$status.user.utc_offset}}</utc_offset> | ||||
|   	  <time_zone>{{$status.user.time_zone}}</time_zone> | ||||
|   	  <profile_background_image_url>{{$status.user.profile_background_image_url}}</profile_background_image_url> | ||||
|   	  <profile_background_tile>{{$status.user.profile_background_tile}}</profile_background_tile> | ||||
|   	  <profile_use_background_image>{{$status.user.profile_use_background_image}}</profile_use_background_image> | ||||
|   	  <notifications></notifications> | ||||
|   	  <geo_enabled>{{$status.user.geo_enabled}}</geo_enabled> | ||||
|   	  <verified>{{$status.user.verified}}</verified> | ||||
|   	  <following></following> | ||||
|   	  <statuses_count>{{$status.user.statuses_count}}</statuses_count> | ||||
|   	  <lang>{{$status.user.lang}}</lang> | ||||
|   	  <contributors_enabled>{{$status.user.contributors_enabled}}</contributors_enabled> | ||||
| 	  </user> | ||||
| {{/if}}</status> | ||||
| @@ -1 +0,0 @@ | ||||
| <ok>{{$ok}}</ok> | ||||
| @@ -1,90 +0,0 @@ | ||||
| <feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/"> | ||||
|  <generator uri="http://status.net" version="0.9.7">StatusNet</generator> | ||||
|  <id>{{$rss.self}}</id> | ||||
|  <title>Friendika</title> | ||||
|  <subtitle>Friendika API feed</subtitle> | ||||
|  <logo>{{$rss.logo}}</logo> | ||||
|  <updated>{{$rss.atom_updated}}</updated> | ||||
|  <link type="text/html" rel="alternate" href="{{$rss.alternate}}"/> | ||||
|  <link type="application/atom+xml" rel="self" href="{{$rss.self}}"/> | ||||
|   | ||||
|   | ||||
|  <author> | ||||
| 	<activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type> | ||||
| 	<uri>{{$user.url}}</uri> | ||||
| 	<name>{{$user.name}}</name> | ||||
| 	<link rel="alternate" type="text/html" href="{{$user.url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="106" media:height="106" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="{{$user.profile_image_url}}"/> | ||||
| 	<georss:point></georss:point> | ||||
| 	<poco:preferredUsername>{{$user.screen_name}}</poco:preferredUsername> | ||||
| 	<poco:displayName>{{$user.name}}</poco:displayName> | ||||
| 	<poco:urls> | ||||
| 		<poco:type>homepage</poco:type> | ||||
| 		<poco:value>{{$user.url}}</poco:value> | ||||
| 		<poco:primary>true</poco:primary> | ||||
| 	</poco:urls> | ||||
| 	<statusnet:profile_info local_id="{{$user.id}}"></statusnet:profile_info> | ||||
|  </author> | ||||
|  | ||||
|  <!--Deprecation warning: activity:subject is present only for backward compatibility. It will be removed in the next version of StatusNet.--> | ||||
|  <activity:subject> | ||||
| 	<activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type> | ||||
| 	<id>{{$user.contact_url}}</id> | ||||
| 	<title>{{$user.name}}</title> | ||||
| 	<link rel="alternate" type="text/html" href="{{$user.url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="106" media:height="106" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$user.profile_image_url}}"/> | ||||
| 	<link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="{{$user.profile_image_url}}"/> | ||||
| 	<poco:preferredUsername>{{$user.screen_name}}</poco:preferredUsername> | ||||
| 	<poco:displayName>{{$user.name}}</poco:displayName> | ||||
| 	<poco:urls> | ||||
| 		<poco:type>homepage</poco:type> | ||||
| 		<poco:value>{{$user.url}}</poco:value> | ||||
| 		<poco:primary>true</poco:primary> | ||||
| 	</poco:urls> | ||||
| 	<statusnet:profile_info local_id="{{$user.id}}"></statusnet:profile_info> | ||||
|  </activity:subject> | ||||
|   | ||||
|   | ||||
|   	{{foreach $statuses as $status}} | ||||
| 	<entry> | ||||
| 		<activity:obj_type>{{$status.objecttype}}</activity:obj_type> | ||||
| 		<id>{{$status.message_id}}</id> | ||||
| 		<title>{{$status.text}}</title> | ||||
| 		<content type="html">{{$status.statusnet_html}}</content> | ||||
| 		<link rel="alternate" type="text/html" href="{{$status.url}}"/> | ||||
| 		<activity:verb>{{$status.verb}}</activity:verb> | ||||
| 		<published>{{$status.published}}</published> | ||||
| 		<updated>{{$status.updated}}</updated> | ||||
|  | ||||
| 		<link rel="self" type="application/atom+xml" href="{{$status.self}}"/> | ||||
| 		<link rel="edit" type="application/atom+xml" href="{{$status.edit}}"/> | ||||
| 		<statusnet:notice_info local_id="{{$status.id}}" source="{{$status.source}}" > | ||||
| 		</statusnet:notice_info> | ||||
|  | ||||
| 		<author> | ||||
| 			<activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type> | ||||
| 			<uri>{{$status.user.url}}</uri> | ||||
| 			<name>{{$status.user.name}}</name> | ||||
| 			<link rel="alternate" type="text/html" href="{{$status.user.url}}"/> | ||||
| 			<link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$status.user.profile_image_url}}"/> | ||||
|  | ||||
| 			<georss:point/> | ||||
| 			<poco:preferredUsername>{{$status.user.screen_name}}</poco:preferredUsername> | ||||
| 			<poco:displayName>{{$status.user.name}}</poco:displayName> | ||||
| 			<poco:address/> | ||||
| 			<poco:urls> | ||||
| 				<poco:type>homepage</poco:type> | ||||
| 				<poco:value>{{$status.user.url}}</poco:value> | ||||
| 				<poco:primary>true</poco:primary> | ||||
| 			</poco:urls> | ||||
| 		</author> | ||||
| 		<link rel="ostatus:conversation" type="text/html" href="{{$status.url}}"/>  | ||||
|  | ||||
| 	</entry>     | ||||
|     {{/foreach}} | ||||
| </feed> | ||||
| @@ -1,26 +0,0 @@ | ||||
| <rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:georss="http://www.georss.org/georss" xmlns:twitter="http://api.twitter.com"> | ||||
|   <channel> | ||||
|     <title>Friendika</title> | ||||
|     <link>{{$rss.alternate}}</link> | ||||
|     <atom:link type="application/rss+xml" rel="self" href="{{$rss.self}}"/> | ||||
|     <description>Friendika timeline</description> | ||||
|     <language>{{$rss.language}}</language> | ||||
|     <ttl>40</ttl> | ||||
| 	<image> | ||||
| 		<link>{{$user.link}}</link> | ||||
| 		<title>{{$user.name}}'s items</title> | ||||
| 		<url>{{$user.profile_image_url}}</url> | ||||
| 	</image> | ||||
| 	 | ||||
| {{foreach $statuses as $status}} | ||||
|   <item> | ||||
|     <title>{{$status.user.name}}: {{$status.text}}</title> | ||||
|     <description>{{$status.text}}</description> | ||||
|     <pubDate>{{$status.created_at}}</pubDate> | ||||
|     <guid>{{$status.url}}</guid> | ||||
|     <link>{{$status.url}}</link> | ||||
|     <twitter:source>{{$status.source}}</twitter:source> | ||||
|   </item> | ||||
| {{/foreach}} | ||||
|   </channel> | ||||
| </rss> | ||||
| @@ -1,20 +0,0 @@ | ||||
| <statuses type="array" xmlns:statusnet="http://status.net/schema/api/1/"> | ||||
| {{foreach $statuses as $status}} <status> | ||||
|   <text>{{$status.text}}</text> | ||||
|   <truncated>{{$status.truncated}}</truncated> | ||||
|   <created_at>{{$status.created_at}}</created_at> | ||||
|   <in_reply_to_status_id>{{$status.in_reply_to_status_id}}</in_reply_to_status_id> | ||||
|   <source>{{$status.source}}</source> | ||||
|   <id>{{$status.id}}</id> | ||||
|   <in_reply_to_user_id>{{$status.in_reply_to_user_id}}</in_reply_to_user_id> | ||||
|   <in_reply_to_screen_name>{{$status.in_reply_to_screen_name}}</in_reply_to_screen_name> | ||||
|   <geo>{{$status.geo}}</geo> | ||||
|   <favorited>{{$status.favorited}}</favorited> | ||||
| {{include file="api_user_xml.tpl" user=$status.user}}  <statusnet:html>{{$status.statusnet_html}}</statusnet:html> | ||||
|   <statusnet:conversation_id>{{$status.statusnet_conversation_id}}</statusnet:conversation_id> | ||||
|   <url>{{$status.url}}</url> | ||||
|   <coordinates>{{$status.coordinates}}</coordinates> | ||||
|   <place>{{$status.place}}</place> | ||||
|   <contributors>{{$status.contributors}}</contributors> | ||||
|  </status> | ||||
| {{/foreach}}</statuses> | ||||
| @@ -1,46 +0,0 @@ | ||||
|   <user> | ||||
|    <id>{{$user.id}}</id> | ||||
|    <name>{{$user.name}}</name> | ||||
|    <screen_name>{{$user.screen_name}}</screen_name> | ||||
|    <location>{{$user.location}}</location> | ||||
|    <description>{{$user.description}}</description> | ||||
|    <profile_image_url>{{$user.profile_image_url}}</profile_image_url> | ||||
|    <url>{{$user.url}}</url> | ||||
|    <protected>{{$user.protected}}</protected> | ||||
|    <followers_count>{{$user.followers_count}}</followers_count> | ||||
|    <friends_count>{{$user.friends_count}}</friends_count> | ||||
|    <created_at>{{$user.created_at}}</created_at> | ||||
|    <favourites_count>{{$user.favourites_count}}</favourites_count> | ||||
|    <utc_offset>{{$user.utc_offset}}</utc_offset> | ||||
|    <time_zone>{{$user.time_zone}}</time_zone> | ||||
|    <statuses_count>{{$user.statuses_count}}</statuses_count> | ||||
|    <following>{{$user.following}}</following> | ||||
|    <profile_background_color>{{$user.profile_background_color}}</profile_background_color> | ||||
|    <profile_text_color>{{$user.profile_text_color}}</profile_text_color> | ||||
|    <profile_link_color>{{$user.profile_link_color}}</profile_link_color> | ||||
|    <profile_sidebar_fill_color>{{$user.profile_sidebar_fill_color}}</profile_sidebar_fill_color> | ||||
|    <profile_sidebar_border_color>{{$user.profile_sidebar_border_color}}</profile_sidebar_border_color> | ||||
|    <profile_background_image_url>{{$user.profile_background_image_url}}</profile_background_image_url> | ||||
|    <profile_background_tile>{{$user.profile_background_tile}}</profile_background_tile> | ||||
|    <profile_use_background_image>{{$user.profile_use_background_image}}</profile_use_background_image> | ||||
|    <notifications>{{$user.notifications}}</notifications> | ||||
|    <geo_enabled>{{$user.geo_enabled}}</geo_enabled> | ||||
|    <verified>{{$user.verified}}</verified> | ||||
|    <lang>{{$user.lang}}</lang> | ||||
|    <contributors_enabled>{{$user.contributors_enabled}}</contributors_enabled> | ||||
|    <status>{{if $user.status}} | ||||
|     <created_at>{{$user.status.created_at}}</created_at> | ||||
|     <id>{{$user.status.id}}</id> | ||||
|     <text>{{$user.status.text}}</text> | ||||
|     <source>{{$user.status.source}}</source> | ||||
|     <truncated>{{$user.status.truncated}}</truncated> | ||||
|     <in_reply_to_status_id>{{$user.status.in_reply_to_status_id}}</in_reply_to_status_id> | ||||
|     <in_reply_to_user_id>{{$user.status.in_reply_to_user_id}}</in_reply_to_user_id> | ||||
|     <favorited>{{$user.status.favorited}}</favorited> | ||||
|     <in_reply_to_screen_name>{{$user.status.in_reply_to_screen_name}}</in_reply_to_screen_name> | ||||
|     <geo>{{$user.status.geo}}</geo> | ||||
|     <coordinates>{{$user.status.coordinates}}</coordinates> | ||||
|     <place>{{$user.status.place}}</place> | ||||
|     <contributors>{{$user.status.contributors}}</contributors> | ||||
|   {{/if}}</status> | ||||
|   </user> | ||||
| @@ -1,10 +0,0 @@ | ||||
| {{if $count}} | ||||
| <div id="birthday-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('birthday-wrapper');">{{$event_reminders}} ({{$count}})</div> | ||||
| <div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">{{$event_title}}</div> | ||||
| <div id="birthday-title-end"></div> | ||||
| {{foreach $events as $event}} | ||||
| <div class="birthday-list" id="birthday-{{$event.id}}"></a> <a href="{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div> | ||||
| {{/foreach}} | ||||
| </div> | ||||
| {{/if}} | ||||
|  | ||||
| @@ -1,30 +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"> | ||||
|  | ||||
| tinyMCE.init({ | ||||
| 	theme : "advanced", | ||||
| 	mode : "{{$editselect}}", | ||||
| 	elements: "contact-edit-info", | ||||
| 	plugins : "bbcode", | ||||
| 	theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor", | ||||
| 	theme_advanced_buttons2 : "", | ||||
| 	theme_advanced_buttons3 : "", | ||||
| 	theme_advanced_toolbar_location : "top", | ||||
| 	theme_advanced_toolbar_align : "center", | ||||
| 	theme_advanced_styles : "blockquote,code", | ||||
| 	gecko_spellcheck : true, | ||||
| 	entity_encoding : "raw", | ||||
| 	add_unload_trigger : false, | ||||
| 	remove_linebreaks : false, | ||||
| 	force_p_newlines : false, | ||||
| 	force_br_newlines : true, | ||||
| 	forced_root_block : '', | ||||
| 	content_css: "{{$baseurl}}/view/custom_tinymce.css" | ||||
|  | ||||
|  | ||||
| }); | ||||
|  | ||||
|  | ||||
| </script> | ||||
|  | ||||
| @@ -1,57 +0,0 @@ | ||||
| <h3>{{$header}}</h3> | ||||
|  | ||||
| <div id="delegate-desc" class="delegate-desc">{{$desc}}</div> | ||||
|  | ||||
| {{if $managers}} | ||||
| <h3>{{$head_managers}}</h3> | ||||
|  | ||||
| {{foreach $managers as $x}} | ||||
|  | ||||
| <div class="contact-block-div"> | ||||
| <a class="contact-block-link" href="#" > | ||||
| <img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" /> | ||||
| </a> | ||||
| </div> | ||||
|  | ||||
| {{/foreach}} | ||||
| <div class="clear"></div> | ||||
| <hr /> | ||||
| {{/if}} | ||||
|  | ||||
|  | ||||
| <h3>{{$head_delegates}}</h3> | ||||
|  | ||||
| {{if $delegates}} | ||||
| {{foreach $delegates as $x}} | ||||
|  | ||||
| <div class="contact-block-div"> | ||||
| <a class="contact-block-link" href="{{$base}}/delegate/remove/{{$x.uid}}" > | ||||
| <img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" /> | ||||
| </a> | ||||
| </div> | ||||
|  | ||||
| {{/foreach}} | ||||
| <div class="clear"></div> | ||||
| {{else}} | ||||
| {{$none}} | ||||
| {{/if}} | ||||
| <hr /> | ||||
|  | ||||
|  | ||||
| <h3>{{$head_potentials}}</h3> | ||||
| {{if $potentials}} | ||||
| {{foreach $potentials as $x}} | ||||
|  | ||||
| <div class="contact-block-div"> | ||||
| <a class="contact-block-link" href="{{$base}}/delegate/add/{{$x.uid}}" > | ||||
| <img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" /> | ||||
| </a> | ||||
| </div> | ||||
|  | ||||
| {{/foreach}} | ||||
| <div class="clear"></div> | ||||
| {{else}} | ||||
| {{$none}} | ||||
| {{/if}} | ||||
| <hr /> | ||||
|  | ||||
| @@ -1,8 +0,0 @@ | ||||
| <script> | ||||
| $(document).ready(function() { | ||||
| 	$(".comment-edit-wrapper textarea").editor_autocomplete(baseurl+"/acl?f=&n=1"); | ||||
| 	// make auto-complete work in more places | ||||
| 	$(".wall-item-comment-wrapper textarea").editor_autocomplete(baseurl+"/acl?f=&n=1"); | ||||
| }); | ||||
| </script> | ||||
|  | ||||
| @@ -1,8 +0,0 @@ | ||||
| <div class="widget"> | ||||
| 	<h3>{{$title}}</h3> | ||||
| 	<ul class="nav nav-pills nav-stacked"> | ||||
| 		<li><a href="#" onclick="changeView('changeView', 'month'); return false;">{{$month}}</a></li> | ||||
| 		<li><a href="#" onclick="changeView('changeView', 'agendaWeek'); return false;">{{$week}}</a></li> | ||||
| 		<li><a href="#" onclick="changeView('changeView', 'agendaDay'); return false;">{{$day}}</a></li> | ||||
| 	</ul> | ||||
| </div> | ||||
| @@ -1,10 +0,0 @@ | ||||
| {{if $count}} | ||||
| <div id="event-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('event-wrapper');">{{$event_reminders}} ({{$count}})</div> | ||||
| <div id="event-wrapper" style="display: none;" ><div id="event-title">{{$event_title}}</div> | ||||
| <div id="event-title-end"></div> | ||||
| {{foreach $events as $event}} | ||||
| <div class="event-list" id="event-{{$event.id}}"></a> <a href="events/{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div> | ||||
| {{/foreach}} | ||||
| </div> | ||||
| {{/if}} | ||||
|  | ||||
| @@ -1,7 +0,0 @@ | ||||
| <div class="group-delete-wrapper button" id="group-delete-wrapper-{{$id}}" > | ||||
| 	<a href="group/drop/{{$id}}?t={{$form_security_token}}"  | ||||
| 		onclick="return confirmDelete();"  | ||||
| 		id="group-delete-icon-{{$id}}"  | ||||
| 		class="group-delete-icon btn btn-outline-secondary" title="{{$delete}}" ><i class="fa fa-trash-o drop-icons"></i></a> | ||||
| </div> | ||||
| <div class="group-delete-end"></div> | ||||
| @@ -1,16 +0,0 @@ | ||||
| <div class="profile-match-wrapper"> | ||||
| 	<div class="profile-match-photo"> | ||||
| 		<a href="{{$url}}"> | ||||
| 			<img src="{{$photo}}" alt="{{$name}}" title="{{$name}}[{{$tags}}]" /> | ||||
| 		</a> | ||||
| 	</div> | ||||
| 	<div class="profile-match-break"></div> | ||||
| 	<div class="profile-match-name"> | ||||
| 		<a href="{{$url}}" title="{{$name}}[{{$tags}}]">{{$name}}</a> | ||||
| 	</div> | ||||
| 	<div class="profile-match-end"></div> | ||||
| 	{{if $connlnk}} | ||||
| 	<div class="profile-match-connect"><a href="{{$connlnk}}" title="{{$conntxt}}"><i class="fa fa-plus connect-icon"></i> {{$conntxt}}</a></div> | ||||
| 	{{/if}} | ||||
|  | ||||
| </div> | ||||
| @@ -1,6 +0,0 @@ | ||||
| <div id="directory_safemode" class="widget"> | ||||
| <h3>{{$safemode}}</h3> | ||||
| <ul class="nav nav-pills nav-stacked"> | ||||
| 	<li><a href="toggle_safesearch">{{$toggle}}</a></li> | ||||
| </ul> | ||||
| </div> | ||||
| @@ -1,11 +0,0 @@ | ||||
| {{* TODO: Make id configurabel *}} | ||||
| <select id='timezone_select' name='timezone'> | ||||
| {{foreach $continents as $continent => $cities}} | ||||
| <optgroup label="{{$continent}}"> | ||||
| {{foreach $cities as $city => $value}} | ||||
| <option value='{{$value}}' {{if $value == $selected}}selected='selected'{{/if}}>{{$city}}</option> | ||||
| {{/foreach}} | ||||
| </optgroup> | ||||
| {{/foreach}} | ||||
| </select> | ||||
|  | ||||
| @@ -1,10 +0,0 @@ | ||||
| <div class="generic-content-wrapper-styled"> | ||||
| <h1>{{$title}}</h1> | ||||
|  | ||||
| <form action="settings/connectors" method="post" autocomplete="off"> | ||||
| <input type='hidden' name='form_security_token' value='{{$form_security_token}}'> | ||||
|  | ||||
| {{$settings_connectors}} | ||||
|  | ||||
| </form> | ||||
| </div> | ||||
| @@ -8,6 +8,7 @@ | ||||
| <input type="hidden" id="id_abook" name="abook" value="{{$abook}}" /> | ||||
| {{include file="field_input.tpl" field=$name}} | ||||
| {{include file="field_input.tpl" field=$tags}} | ||||
| {{include file="field_checkbox.tpl" field=$resend}} | ||||
| {{include file="field_textarea.tpl" field=$words}} | ||||
|  | ||||
| <div class="sources-submit-wrapper" > | ||||
|   | ||||
| @@ -7,6 +7,7 @@ | ||||
| <input type="hidden" id="id_abook" name="abook" value="{{$abook}}" /> | ||||
| {{include file="field_input.tpl" field=$name}} | ||||
| {{include file="field_input.tpl" field=$tags}} | ||||
| {{include file="field_checkbox.tpl" field=$resend}} | ||||
| {{include file="field_textarea.tpl" field=$words}} | ||||
|  | ||||
| <div class="sources-submit-wrapper" > | ||||
|   | ||||
| @@ -1,2 +0,0 @@ | ||||
| <a id="toggle_mobile_link" href="{{$toggle_link}}">{{$toggle_text}}</a> | ||||
|  | ||||
| @@ -1,3 +0,0 @@ | ||||
| <div id="write-pages" class="bigwidget"> | ||||
| <span id="wp-new"><a href="{{$newurl}}">{{$new}}</a></span> <span id="wp-edit"><a href="{{$editurl}}">{{$edit}}</a></span> | ||||
| </div> | ||||
		Reference in New Issue
	
	Block a user