diff options
-rw-r--r-- | include/conversation.php | 9 | ||||
-rw-r--r-- | include/identity.php | 21 | ||||
-rw-r--r-- | mod/item.php | 41 | ||||
-rw-r--r-- | mod/rpost.php | 1 | ||||
-rw-r--r-- | version.inc | 2 | ||||
-rw-r--r-- | view/tpl/channel_id_select.tpl | 7 | ||||
-rwxr-xr-x | view/tpl/jot.tpl | 6 |
7 files changed, 68 insertions, 19 deletions
diff --git a/include/conversation.php b/include/conversation.php index af41e8fa7..880639bf4 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -1052,6 +1052,13 @@ function status_editor($a,$x,$popup=false) { } + if(array_key_exists('channel_select',$x) && $x['channel_select']) { + require_once('include/identity.php'); + $id_select = identity_selector(); + } + else + $id_select = ''; + $webpage = ((x($x,'webpage')) ? $x['webpage'] : ''); @@ -1098,6 +1105,8 @@ function status_editor($a,$x,$popup=false) { '$webpage' => $webpage, '$placeholdpagetitle' => ((x($x,'ptlabel')) ? $x['ptlabel'] : t('Page link title')), '$pagetitle' => (x($x,'pagetitle') ? $x['pagetitle'] : ''), + '$id_select' => $id_select, + '$id_seltext' => t('Post as'), '$upload' => t('Upload photo'), '$shortupload' => t('upload photo'), '$attach' => t('Attach file'), diff --git a/include/identity.php b/include/identity.php index d15f3861e..e773bb314 100644 --- a/include/identity.php +++ b/include/identity.php @@ -1257,3 +1257,24 @@ function get_channel_by_nick($nick) { return(($r) ? $r[0] : false); } + + +function identity_selector() { + if(local_user()) { + $r = q("select channel.*, xchan.* from channel left join xchan on channel.channel_hash = xchan.xchan_hash where channel.channel_account_id = %d and not ( channel_pageflags & %d ) order by channel_name ", + intval(get_account_id()), + intval(PAGE_REMOVED) + ); + if(count($r) > 1) { + $selected_channel = null; + $account = get_app()->get_account(); + $o = replace_macros(get_markup_template('channel_id_select.tpl'),array( + '$channels' => $r, + '$selected' => local_user() + )); + return $o; + } + } + + return ''; +}
\ No newline at end of file diff --git a/mod/item.php b/mod/item.php index c1feb5c96..86ed4fda8 100644 --- a/mod/item.php +++ b/mod/item.php @@ -169,6 +169,25 @@ function item_post(&$a) { } $observer = $a->get_observer(); + $channel = null; + + $dest_channel = ((array_key_exists('dest_channel',$_REQUEST) && intval($_REQUEST['dest_channel'])) ? intval($_REQUEST['dest_channel']) : 0); + + if(local_user() && $dest_channel && $dest_channel != local_user()) { + // posting as another channel which you control + $account = $a->get_account(); + $r = q("select * from channel left join account on channel_account_id = account_id where account_id = %d and channel_id = %d limit 1", + intval($account['account_id']), + intval($dest_channel) + ); + if($r) { + $channel = $r[0]; + $profile_uid = $dest_channel; + } + } + + + if($parent) { logger('mod_item: item_post parent=' . $parent); @@ -219,34 +238,22 @@ function item_post(&$a) { $orig_post = $i[0]; } - $channel = null; - if(local_user() && local_user() == $profile_uid) { - $channel = $a->get_channel(); - } - else { - $dest_channel = ((array_key_exists('dest_channel',$_REQUEST) && intval($_REQUEST['dest_channel'])) ? intval($_REQUEST['dest_channel']) : 0); - - if(local_user() && $dest_channel) { - // posting as another channel which you control - $account = $a->get_account(); - $r = q("select * from channel left join account on channel_account_id = account_id where account_d = %d and channel_id = %d limit 1", - intval($account['account_id']), - intval($dest_channel) - ); - if($r) - $channel = $r[0]; + if(! $channel) { + if(local_user() && local_user() == $profile_uid) { + $channel = $a->get_channel(); } else { // posting as yourself but not necessarily to a channel you control $r = q("select * from channel left join account on channel_account_id = account_id where channel_id = %d LIMIT 1", intval($profile_uid) ); - if(count($r)) + if($r) $channel = $r[0]; } } + if(! $channel) { logger("mod_item: no channel."); if(x($_REQUEST,'return')) diff --git a/mod/rpost.php b/mod/rpost.php index 18d4c86cd..a9a864d5e 100644 --- a/mod/rpost.php +++ b/mod/rpost.php @@ -106,6 +106,7 @@ function rpost_content(&$a) { || $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'), 'acl' => populate_acl($channel, $false), 'bang' => '', +// 'channel_select' => true, 'visitor' => 'block', 'profile_uid' => local_user(), 'title' => $_REQUEST['title'], diff --git a/version.inc b/version.inc index 408d50356..ca09188f7 100644 --- a/version.inc +++ b/version.inc @@ -1 +1 @@ -2014-04-04.637 +2014-04-05.638 diff --git a/view/tpl/channel_id_select.tpl b/view/tpl/channel_id_select.tpl new file mode 100644 index 000000000..ecebd4bc0 --- /dev/null +++ b/view/tpl/channel_id_select.tpl @@ -0,0 +1,7 @@ +{{if $channels}} +<select name="dest_channel" id="dest-channel-select"> +{{foreach $channels as $c}} +<option {{if $c.channel_id == $selected}}selected="selected"{{/if}} value="{{$c.channel_id}}">{{$c.channel_name}}</option> +{{/foreach}} +</select> +{{/if}}
\ No newline at end of file diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl index eea586ceb..5f79b4d88 100755 --- a/view/tpl/jot.tpl +++ b/view/tpl/jot.tpl @@ -13,7 +13,11 @@ <input type="hidden" name="preview" id="jot-preview" value="0" /> {{$mimeselect}} {{$layoutselect}} - + {{if $id_select}} + <div class="channel-id-select-div"> + <span class="channel-id-select-desc">{{$id_seltext}}</span> {{$id_select}} + </div> + {{/if}} <div id="jot-title-wrap"> <input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}" class="jothidden" style="display:none"> </div> |