From b9656cbe2379183c4f0130206a396ed1ee2aec75 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 11:49:11 +0200 Subject: [PATCH 01/12] Delegations: Now the menu of the settings appears at the delegations settings --- mod/delegate.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mod/delegate.php b/mod/delegate.php index 8c50318590..dd9caba252 100644 --- a/mod/delegate.php +++ b/mod/delegate.php @@ -117,6 +117,9 @@ function delegate_content(&$a) { if(! in_array($rr['uid'],$uids)) $potentials[] = $rr; + require_once("mod/settings.php"); + settings_init($a); + $o = replace_macros(get_markup_template('delegate.tpl'),array( '$header' => t('Delegate Page Management'), '$base' => $a->get_baseurl(), @@ -136,4 +139,4 @@ function delegate_content(&$a) { return $o; -} \ No newline at end of file +} From 9ae9b66328e24475766c2998a45ab6b32c68ea08 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 11:58:04 +0200 Subject: [PATCH 02/12] Export personal data: Now the settings menu on the left side is taken from the settings module. --- mod/uexport.php | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/mod/uexport.php b/mod/uexport.php index bad924d8e8..a44620a976 100644 --- a/mod/uexport.php +++ b/mod/uexport.php @@ -3,19 +3,23 @@ function uexport_init(&$a){ if(! local_user()) killme(); - + + require_once("mod/settings.php"); + settings_init($a); + +/* $tabs = array( array( 'label' => t('Account settings'), 'url' => $a->get_baseurl(true).'/settings', 'selected' => '', - ), + ), array( 'label' => t('Display settings'), 'url' => $a->get_baseurl(true).'/settings/display', 'selected' =>'', - ), - + ), + array( 'label' => t('Connector settings'), 'url' => $a->get_baseurl(true).'/settings/connectors', @@ -42,17 +46,18 @@ function uexport_init(&$a){ 'selected' => '' ) ); - + $tabtpl = get_markup_template("generic_links_widget.tpl"); $a->page['aside'] = replace_macros($tabtpl, array( '$title' => t('Settings'), '$class' => 'settings-widget', '$items' => $tabs, )); +*/ } function uexport_content(&$a){ - + if ($a->argc > 1) { header("Content-type: application/json"); header('Content-Disposition: attachment; filename="'.$a->user['nickname'].'.'.$a->argv[1].'"'); @@ -73,15 +78,15 @@ function uexport_content(&$a){ array('/uexport/backup',t('Export all'),t('Export your accout info, contacts and all your items as json. Could be a very big file, and could take a lot of time. Use this to make a full backup of your account (photos are not exported)')), ); call_hooks('uexport_options', $options); - + $tpl = get_markup_template("uexport.tpl"); return replace_macros($tpl, array( '$baseurl' => $a->get_baseurl(), '$title' => t('Export personal data'), '$options' => $options )); - - + + } function _uexport_multirow($query) { @@ -117,7 +122,7 @@ function uexport_account($a){ $user = _uexport_row( sprintf( "SELECT * FROM `user` WHERE `uid` = %d LIMIT 1", intval(local_user()) ) ); - + $contact = _uexport_multirow( sprintf( "SELECT * FROM `contact` WHERE `uid` = %d ",intval(local_user()) ) ); @@ -139,7 +144,7 @@ function uexport_account($a){ $group = _uexport_multirow( sprintf( "SELECT * FROM `group` WHERE uid = %d",intval(local_user()) ) ); - + $group_member = _uexport_multirow( sprintf( "SELECT * FROM `group_member` WHERE uid = %d",intval(local_user()) ) ); @@ -195,4 +200,4 @@ function uexport_all(&$a) { echo json_encode($output)."\n"; } -} \ No newline at end of file +} From 2e7549c945e4657caae68101e2595f342d390973 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 12:14:45 +0200 Subject: [PATCH 03/12] Show preview of the correct theme, not the mobile theme. --- view/templates/field_themeselect.tpl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/view/templates/field_themeselect.tpl b/view/templates/field_themeselect.tpl index cde744594b..4736235815 100644 --- a/view/templates/field_themeselect.tpl +++ b/view/templates/field_themeselect.tpl @@ -3,12 +3,12 @@ * DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN * *}} - <script>$(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script> + {{if $field.5}}<script>$(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>{{/if}} <div class='field select'> <label for='id_{{$field.0}}'>{{$field.1}}</label> <select name='{{$field.0}}' id='id_{{$field.0}}' {{if $field.5}}onchange="previewTheme(this);"{{/if}} > {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}} </select> <span class='field_help'>{{$field.3}}</span> - <div id="theme-preview"></div> + {{if $field.5}}<div id="theme-preview"></div>{{/if}} </div> From 59c9a9adae49df60db0375a549ee999dc2214bbe Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 12:18:51 +0200 Subject: [PATCH 04/12] OAuth-settings: The "cancel" button generated an error message (and is superfluous), so it is removed --- view/templates/settings_oauth_edit.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/templates/settings_oauth_edit.tpl b/view/templates/settings_oauth_edit.tpl index e3960bf75f..0b55b6b268 100644 --- a/view/templates/settings_oauth_edit.tpl +++ b/view/templates/settings_oauth_edit.tpl @@ -16,7 +16,7 @@ <div class="settings-submit-wrapper" > <input type="submit" name="submit" class="settings-submit" value="{{$submit}}" /> -<input type="submit" name="cancel" class="settings-submit" value="{{$cancel}}" /> +<!-- <input type="submit" name="cancel" class="settings-submit" value="{{$cancel}}" /> --> </div> </form> From ec1f07d5b7459d354351646f0691ef70e09a0551 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 12:39:27 +0200 Subject: [PATCH 05/12] =?UTF-8?q?Only=20show=20the=20preview=20button=20wh?= =?UTF-8?q?en=20it=20is=20activated/Men=C3=BC=20arrangement=20changed=20fo?= =?UTF-8?q?r=20settings=20menu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- view/templates/comment_item.tpl | 2 +- view/templates/jot.tpl | 2 +- view/theme/vier/templates/comment_item.tpl | 2 +- view/theme/vier/templates/nav.tpl | 10 +++++----- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/view/templates/comment_item.tpl b/view/templates/comment_item.tpl index caf98168d0..8cc524283e 100644 --- a/view/templates/comment_item.tpl +++ b/view/templates/comment_item.tpl @@ -34,7 +34,7 @@ <div class="comment-edit-text-end"></div> <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" > <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" /> - <span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span> + {{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}} <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div> </div> diff --git a/view/templates/jot.tpl b/view/templates/jot.tpl index bd9902159c..efa00ce20c 100644 --- a/view/templates/jot.tpl +++ b/view/templates/jot.tpl @@ -59,7 +59,7 @@ <a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon {{$lockstate}}" title="{{$permset}}" ></a>{{$bang}} </div> - <span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span> + {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}} <div id="profile-jot-perms-end"></div> diff --git a/view/theme/vier/templates/comment_item.tpl b/view/theme/vier/templates/comment_item.tpl index b683f12424..557996ba92 100644 --- a/view/theme/vier/templates/comment_item.tpl +++ b/view/theme/vier/templates/comment_item.tpl @@ -46,7 +46,7 @@ </div> <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" /> - <span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span> + {{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}} <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div> </div> diff --git a/view/theme/vier/templates/nav.tpl b/view/theme/vier/templates/nav.tpl index fb3483d446..9254bbccc6 100644 --- a/view/theme/vier/templates/nav.tpl +++ b/view/theme/vier/templates/nav.tpl @@ -42,12 +42,12 @@ <li id="nav-site-linkmenu" class="nav-menu-icon"><a href="#" rel="#nav-site-menu"><span class="icon s22 gear"></span></a> <ul id="nav-site-menu" class="menu-popup"> - {{if $nav.manage}}<li><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}} - {{if $nav.help}} <li><a class="{{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a></li>{{/if}} - <li><a class="{{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" >{{$nav.directory.1}}</a></li> - <!-- {{if $nav.delegations}}<li><a class="{{$nav.delegations.2}}" href="{{$nav.delegations.0}}" title="{{$nav.delegations.3}}">{{$nav.delegations.1}}</a></li>{{/if}} --> - {{if $nav.settings}}<li><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}} {{if $nav.admin}}<li><a class="{{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" >{{$nav.admin.1}}</a></li>{{/if}} + {{if $nav.settings}}<li><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}} + {{if $nav.manage}}<li><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}} + <li><a class="{{$nav.directory.2}}" href="{{$nav.directory.0}}" title="{{$nav.directory.3}}" >{{$nav.directory.1}}</a></li> + {{if $nav.help}} <li><a class="{{$nav.help.2}}" target="friendica-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a></li>{{/if}} + <!-- {{if $nav.delegations}}<li><a class="{{$nav.delegations.2}}" href="{{$nav.delegations.0}}" title="{{$nav.delegations.3}}">{{$nav.delegations.1}}</a></li>{{/if}} --> <li><a class="{{$nav.about.2}}" href="{{$nav.about.0}}" title="{{$nav.about.3}}" >{{$nav.about.1}}</a></li> {{if $nav.logout}}<li><a class="menu-sep {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a></li>{{/if}} From 97d8c03f336a41eb254b1a31956ce68e4a60315c Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 13:02:50 +0200 Subject: [PATCH 06/12] Vier: removed the gray line under the user menu when it was selected --- view/theme/vier/style.css | 1 + 1 file changed, 1 insertion(+) diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index 2f05b07e08..6a048aa0f1 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -727,6 +727,7 @@ nav #nav-messages-linkmenu.selected, nav #nav-user-linklabel.selected, nav #nav-apps-link.selected { background-color: #364e59; + border-bottom-style: none; } /* nav #nav-community-link { */ From 1227d071d11daf8a7b5a36a41e19334be4ff6878 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 13:27:08 +0200 Subject: [PATCH 07/12] The preview button is now a button. This is more consistent --- view/templates/jot.tpl | 3 ++- view/theme/vier/style.css | 8 ++++---- view/theme/vier/templates/comment_item.tpl | 3 ++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/view/templates/jot.tpl b/view/templates/jot.tpl index efa00ce20c..b1c121e352 100644 --- a/view/templates/jot.tpl +++ b/view/templates/jot.tpl @@ -59,7 +59,8 @@ <a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon {{$lockstate}}" title="{{$permset}}" ></a>{{$bang}} </div> - {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}} + <!-- {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}} --> + {{if $preview}}<input type="submit" onclick="preview_post(); return false;" id="jot-preview-link" value="{{$preview}}" />{{/if}} <div id="profile-jot-perms-end"></div> diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index 6a048aa0f1..57eb6725bf 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -1927,12 +1927,12 @@ ul.tabs a { margin-bottom: 10px; } -div.pager, .birthday-notice, #jot-preview-link, .comment-edit-submit-wrapper .fakelink { +div.pager, .birthday-notice, .comment-edit-submit-wrapper .fakelink { padding: 2px 7px 2px 7px; color: black; } -div.pager, .birthday-notice, ul.tabs a, #jot-preview-link, .comment-edit-submit-wrapper .fakelink { +div.pager, .birthday-notice, ul.tabs a, .comment-edit-submit-wrapper .fakelink { border: 1px solid lightgray; background: #F2F2F2; margin-top: 2px; @@ -1943,11 +1943,11 @@ ul.tabs a:hover { color: #333; } -#event-notice:hover, #birthday-notice:hover, ul.tabs li .active, #jot-preview-link:hover, .comment-edit-submit-wrapper .fakelink:hover { +#event-notice:hover, #birthday-notice:hover, ul.tabs li .active, .comment-edit-submit-wrapper .fakelink:hover { color: black; } -ul.tabs a:hover, #event-notice:hover, #birthday-notice:hover, ul.tabs li .active, #jot-preview-link:hover, .comment-edit-submit-wrapper .fakelink:hover { +ul.tabs a:hover, #event-notice:hover, #birthday-notice:hover, ul.tabs li .active, .comment-edit-submit-wrapper .fakelink:hover { background-color: #e5e5e5; text-decoration: none; border: 1px solid darkgray; diff --git a/view/theme/vier/templates/comment_item.tpl b/view/theme/vier/templates/comment_item.tpl index 557996ba92..7cbc02e060 100644 --- a/view/theme/vier/templates/comment_item.tpl +++ b/view/theme/vier/templates/comment_item.tpl @@ -46,7 +46,8 @@ </div> <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" /> - {{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}} + {{if $preview}}<input type="submit" onclick="preview_comment({{$id}}); return false;" id="comment-edit-preview-link-{{$id}}" class="comment-edit-submit" value="{{$preview}}" />{{/if}} + <!-- {{if $preview}}<span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>{{/if}} --> <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div> </div> From 7134d27bae4d8e4a1611ce2a2fb07fd204171c61 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 15:41:29 +0200 Subject: [PATCH 08/12] Icons for Dreamwidth and InsaneJournal --- images/dreamwidth.png | Bin 0 -> 7538 bytes images/insanejournal.gif | Bin 0 -> 5939 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/dreamwidth.png create mode 100644 images/insanejournal.gif diff --git a/images/dreamwidth.png b/images/dreamwidth.png new file mode 100644 index 0000000000000000000000000000000000000000..fe39b962eea4a8462a8ad05f1cae56f89802fa63 GIT binary patch literal 7538 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 literal 0 HcmV?d00001 diff --git a/images/insanejournal.gif b/images/insanejournal.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c045aece3f6ae254c2263fb0a2e9dd6ba7d257b GIT binary patch literal 5939 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 literal 0 HcmV?d00001 From e0c5934a2873f0ee9aa324448962582a462d74c5 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Thu, 24 Apr 2014 16:41:22 +0200 Subject: [PATCH 09/12] Global CSS changed for opacity of disabled networks. --- view/global.css | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/view/global.css b/view/global.css index 0191c7d7c3..b165cbd4f3 100644 --- a/view/global.css +++ b/view/global.css @@ -1,10 +1,14 @@ /* List of social Networks */ -img.connector { +img.connector, img.connector-disabled { height: 40px; margin-right: 10px; border-radius: 10px; } +img.connector-disabled { + opacity: 0.5; +} + h3.connector { display: inline-block; vertical-align: bottom; From 79da821c753e1a8a9a086541239130e0986afbb5 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sat, 26 Apr 2014 01:33:33 +0200 Subject: [PATCH 10/12] Added template for Diaspora reshare --- view/templates/diaspora_reshare.tpl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 view/templates/diaspora_reshare.tpl diff --git a/view/templates/diaspora_reshare.tpl b/view/templates/diaspora_reshare.tpl new file mode 100644 index 0000000000..c2b4bf7744 --- /dev/null +++ b/view/templates/diaspora_reshare.tpl @@ -0,0 +1,18 @@ +{{* + * AUTOMATICALLY GENERATED TEMPLATE + * DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN + * + *}} +<XML> + <post> + <reshare> + <root_diaspora_id>{{$root_handle}}</root_diaspora_id> + <root_guid>{{$root_guid}}</root_guid> + <guid>{{$guid}}</guid> + <diaspora_handle>{{$handle}}</diaspora_handle> + <public>{{$public}}</public> + <created_at>{{$created}}</created_at> + <provider_display_name>{{$provider}}</provider_display_name> + </reshare> + </post> +</XML> From e75562cd6df1980b922eaa3f64a648f6a9d1c716 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sat, 26 Apr 2014 01:35:02 +0200 Subject: [PATCH 11/12] Diaspora: support for sending native reshares. If a message from Diaspora is repeated, then it will be repeated as native reshare. --- include/diaspora.php | 83 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 72 insertions(+), 11 deletions(-) diff --git a/include/diaspora.php b/include/diaspora.php index 4db8ea321b..0b0790f022 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2309,26 +2309,40 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) { require_once('include/datetime.php'); $created = datetime_convert('UTC','UTC',$item['created'],'Y-m-d H:i:s \U\T\C'); - // To-Do // Detect a share element and do a reshare // see: https://github.com/Raven24/diaspora-federation/blob/master/lib/diaspora-federation/entities/reshare.rb - $tpl = get_markup_template('diaspora_post.tpl'); - $msg = replace_macros($tpl, array( - '$body' => $body, - '$guid' => $item['guid'], - '$handle' => xmlify($myaddr), - '$public' => $public, - '$created' => $created, - '$provider' => $item["app"] - )); + if (!$item['private'] AND ($ret = diaspora_is_reshare($item["body"]))) { + $tpl = get_markup_template('diaspora_reshare.tpl'); + $msg = replace_macros($tpl, array( + '$root_handle' => xmlify($ret['root_handle']), + '$root_guid' => $ret['root_guid'], + '$guid' => $item['guid'], + '$handle' => xmlify($myaddr), + '$public' => $public, + '$created' => $created, + '$provider' => $item["app"] + )); + } else { + $tpl = get_markup_template('diaspora_post.tpl'); + $msg = replace_macros($tpl, array( + '$body' => $body, + '$guid' => $item['guid'], + '$handle' => xmlify($myaddr), + '$public' => $public, + '$created' => $created, + '$provider' => $item["app"] + )); + } - logger('diaspora_send_status: ' . $owner['username'] . ' -> ' . $contact['name'] . ' base message: ' . $msg, LOGGER_DATA); + logger('diaspora_send_status: '.$owner['username'].' -> '.$contact['name'].' base message: '.$msg, LOGGER_DATA); $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch))); //$slap = 'xml=' . urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)); $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch); + logger('diaspora_send_status: guid: '.$item['guid'].' root_guid: '.$ret['root_guid'].' result '.$return_code, LOGGER_DEBUG); + if(count($images)) { diaspora_send_images($item,$owner,$contact,$images,$public_batch); } @@ -2336,6 +2350,53 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) { return $return_code; } +function diaspora_is_reshare($body) { + $body = trim($body); + + // Skip if it isn't a pure repeated messages + // Does it start with a share? + if (strpos($body, "[share") > 0) + return(false); + + // Does it end with a share? + if (strlen($body) > (strrpos($body, "[/share]") + 8)) + return(false); + + $attributes = preg_replace("/\[share(.*?)\]\s?(.*?)\s?\[\/share\]\s?/ism","$1",$body); + // Skip if there is no shared message in there + if ($body == $attributes) + return(false); + + $profile = ""; + preg_match("/profile='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + preg_match('/profile="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $profile = $matches[1]; + + $ret= array(); + + $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); + if ($ret["root_handle"] == $profile) + return(false); + + $link = ""; + preg_match("/link='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + preg_match('/link="(.*?)"/ism', $attributes, $matches); + if ($matches[1] != "") + $link = $matches[1]; + + $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); + if ($ret["root_guid"] == $link) + return(false); + + return($ret); +} function diaspora_send_images($item,$owner,$contact,$images,$public_batch = false) { $a = get_app(); From 2846dfeb055eed687f79e4df0c1c9971ec2e5097 Mon Sep 17 00:00:00 2001 From: Michael Vogel <icarus@dabo.de> Date: Sat, 26 Apr 2014 02:22:30 +0200 Subject: [PATCH 12/12] Ther eis now a user setting to disabled notices. The Diaspora reshare now checks for empty values. --- boot.php | 4 ++++ include/diaspora.php | 6 +++--- mod/settings.php | 6 ++++++ view/templates/settings_display.tpl | 1 + view/theme/vier/style.css | 3 ++- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/boot.php b/boot.php index 139564ec55..3a9e8c3e72 100644 --- a/boot.php +++ b/boot.php @@ -1255,6 +1255,10 @@ if(! function_exists('info')) { */ function info($s) { $a = get_app(); + + if (local_user() AND get_pconfig(local_user(),'system','ignore_info')) + return; + if(! x($_SESSION,'sysmsg_info')) $_SESSION['sysmsg_info'] = array(); if($a->interactive) $_SESSION['sysmsg_info'][] = $s; diff --git a/include/diaspora.php b/include/diaspora.php index 0b0790f022..3673b1fc2e 100755 --- a/include/diaspora.php +++ b/include/diaspora.php @@ -2341,7 +2341,7 @@ function diaspora_send_status($item,$owner,$contact,$public_batch = false) { $return_code = diaspora_transmit($owner,$contact,$slap,$public_batch); - logger('diaspora_send_status: guid: '.$item['guid'].' root_guid: '.$ret['root_guid'].' result '.$return_code, LOGGER_DEBUG); + logger('diaspora_send_status: guid: '.$item['guid'].' result '.$return_code, LOGGER_DEBUG); if(count($images)) { diaspora_send_images($item,$owner,$contact,$images,$public_batch); @@ -2379,7 +2379,7 @@ function diaspora_is_reshare($body) { $ret= array(); $ret["root_handle"] = preg_replace("=https?://(.*)/u/(.*)=ism", "$2@$1", $profile); - if ($ret["root_handle"] == $profile) + if (($ret["root_handle"] == $profile) OR ($ret["root_handle"] == "")) return(false); $link = ""; @@ -2392,7 +2392,7 @@ function diaspora_is_reshare($body) { $link = $matches[1]; $ret["root_guid"] = preg_replace("=https?://(.*)/posts/(.*)=ism", "$2", $link); - if ($ret["root_guid"] == $link) + if (($ret["root_guid"] == $link) OR ($ret["root_guid"] == "")) return(false); return($ret); diff --git a/mod/settings.php b/mod/settings.php index c86ca69bb9..2519928b6d 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -265,6 +265,7 @@ function settings_post(&$a) { $theme = ((x($_POST,'theme')) ? notags(trim($_POST['theme'])) : $a->user['theme']); $mobile_theme = ((x($_POST,'mobile_theme')) ? notags(trim($_POST['mobile_theme'])) : ''); $nosmile = ((x($_POST,'nosmile')) ? intval($_POST['nosmile']) : 0); + $noinfo = ((x($_POST,'noinfo')) ? intval($_POST['noinfo']) : 0); $infinite_scroll = ((x($_POST,'infinite_scroll')) ? intval($_POST['infinite_scroll']) : 0); $browser_update = ((x($_POST,'browser_update')) ? intval($_POST['browser_update']) : 0); $browser_update = $browser_update * 1000; @@ -287,6 +288,7 @@ function settings_post(&$a) { set_pconfig(local_user(),'system','itemspage_network', $itemspage_network); set_pconfig(local_user(),'system','itemspage_mobile_network', $itemspage_mobile_network); set_pconfig(local_user(),'system','no_smilies',$nosmile); + set_pconfig(local_user(),'system','ignore_info',$noinfo); set_pconfig(local_user(),'system','infinite_scroll',$infinite_scroll); @@ -850,6 +852,9 @@ function settings_content(&$a) { $nosmile = get_pconfig(local_user(),'system','no_smilies'); $nosmile = (($nosmile===false)? '0': $nosmile); // default if not set: 0 + $noinfo = get_pconfig(local_user(),'system','ignore_info'); + $noinfo = (($noinfo===false)? '0': $noinfo); // default if not set: 0 + $infinite_scroll = get_pconfig(local_user(),'system','infinite_scroll'); $infinite_scroll = (($infinite_scroll===false)? '0': $infinite_scroll); // default if not set: 0 @@ -873,6 +878,7 @@ function settings_content(&$a) { '$itemspage_network' => array('itemspage_network', t("Number of items to display per page:"), $itemspage_network, t('Maximum of 100 items')), '$itemspage_mobile_network' => array('itemspage_mobile_network', t("Number of items to display per page when viewed from mobile device:"), $itemspage_mobile_network, t('Maximum of 100 items')), '$nosmile' => array('nosmile', t("Don't show emoticons"), $nosmile, ''), + '$noinfo' => array('noinfo', t("Don't show notices"), $noinfo, ''), '$infinite_scroll' => array('infinite_scroll', t("Infinite scroll"), $infinite_scroll, ''), '$theme_config' => $theme_config, diff --git a/view/templates/settings_display.tpl b/view/templates/settings_display.tpl index 5da575049f..a135842cf3 100644 --- a/view/templates/settings_display.tpl +++ b/view/templates/settings_display.tpl @@ -14,6 +14,7 @@ {{include file="field_input.tpl" field=$itemspage_mobile_network}} {{include file="field_input.tpl" field=$ajaxint}} {{include file="field_checkbox.tpl" field=$nosmile}} +{{include file="field_checkbox.tpl" field=$noinfo}} {{include file="field_checkbox.tpl" field=$infinite_scroll}} diff --git a/view/theme/vier/style.css b/view/theme/vier/style.css index 57eb6725bf..5e8d97418c 100644 --- a/view/theme/vier/style.css +++ b/view/theme/vier/style.css @@ -1425,8 +1425,9 @@ h2 { /* width: 700px; */ width: 100%; padding: 0; - margin: 10px 0; + margin: 10px 0px 0px 0px; border-bottom: 0px; + box-shadow: none; } .wall-item-bottom .comment-edit-preview {