some work on mod group

This commit is contained in:
Mario 2018-06-17 16:58:12 +02:00
parent 9e29c13678
commit 9c5df51141
11 changed files with 181 additions and 171 deletions

View file

@ -7,6 +7,17 @@ require_once('include/group.php');
class Group extends \Zotlabs\Web\Controller {
function init() {
if(! local_channel()) {
notice( t('Permission denied.') . EOL);
return;
}
\App::$profile_uid = local_channel();
nav_set_selected('Privacy Groups');
}
function post() {
if(! local_channel()) {
@ -22,12 +33,10 @@ class Group extends \Zotlabs\Web\Controller {
$r = group_add(local_channel(),$name,$public);
if($r) {
info( t('Privacy group created.') . EOL );
$r = group_byname(local_channel(),$name);
if($r)
goaway(z_root() . '/group/' . $r);
}
else
notice( t('Could not create privacy group.') . EOL );
else {
notice( t('Could not create privacy group.') . EOL );
}
goaway(z_root() . '/group');
}
@ -74,30 +83,59 @@ class Group extends \Zotlabs\Web\Controller {
notice( t('Permission denied') . EOL);
return;
}
// Switch to text mode interface if we have more than 'n' contacts or group members
$switchtotext = get_pconfig(local_channel(),'system','groupedit_image_limit');
if($switchtotext === false)
$switchtotext = get_config('system','groupedit_image_limit');
if($switchtotext === false)
$switchtotext = 400;
$tpl = get_markup_template('group_edit.tpl');
$context = array('$submit' => t('Submit'));
if((argc() == 2) && (argv(1) === 'new')) {
return replace_macros($tpl, $context + array(
'$title' => t('Create a group of channels.'),
'$gname' => array('groupname',t('Privacy group name: '), '', ''),
'$gid' => 'new',
'$public' => array('public',t('Members are visible to other channels'), false, ''),
if((argc() == 1) || ((argc() == 2) && (argv(1) === 'new'))) {
$new = (((argc() == 2) && (argv(1) === 'new')) ? true : false);
$groups = q("SELECT id, gname FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
intval(local_channel())
);
$i = 0;
foreach($groups as $group) {
$entries[$i]['name'] = $group['gname'];
$entries[$i]['id'] = $group['id'];
$entries[$i]['count'] = count(group_get_members($group['id']));
$i++;
}
$tpl = get_markup_template('privacy_groups.tpl');
$o = replace_macros($tpl, [
'$title' => t('Privacy Groups'),
'$add_new_label' => t('Add Group'),
'$new' => $new,
// new group form
'$gname' => array('groupname',t('Privacy group name')),
'$public' => array('public',t('Members are visible to other channels'), false),
'$form_security_token' => get_form_security_token("group_edit"),
));
'$submit' => t('Submit'),
// groups list
'$title' => t('Privacy Groups'),
'$name_label' => t('Name'),
'$count_label' => t('Members'),
'$entries' => $entries
]);
return $o;
}
$context = array('$submit' => t('Submit'));
$tpl = get_markup_template('group_edit.tpl');
if((argc() == 3) && (argv(1) === 'drop')) {
check_form_security_token_redirectOnErr('/group', 'group_drop', 't');
@ -172,22 +210,17 @@ class Group extends \Zotlabs\Web\Controller {
$preselected[] = $member['xchan_hash'];
}
}
$drop_tpl = get_markup_template('group_drop.tpl');
$drop_txt = replace_macros($drop_tpl, array(
'$id' => $group['id'],
'$delete' => t('Delete'),
'$form_security_token' => get_form_security_token("group_drop"),
));
$context = $context + array(
'$title' => t('Privacy group editor'),
'$title' => sprintf(t('Privacy Group: %s'), $group['gname']),
'$details_label' => t('Edit'),
'$gname' => array('groupname',t('Privacy group name: '),$group['gname'], ''),
'$gid' => $group['id'],
'$drop' => $drop_txt,
'$public' => array('public',t('Members are visible to other channels'), $group['visible'], ''),
'$form_security_token' => get_form_security_token('group_edit'),
'$form_security_token_edit' => get_form_security_token('group_edit'),
'$delete' => t('Delete Group'),
'$form_security_token_drop' => get_form_security_token("group_drop"),
);
}
@ -196,14 +229,14 @@ class Group extends \Zotlabs\Web\Controller {
return;
$groupeditor = array(
'label_members' => t('Members'),
'label_members' => t('Group members'),
'members' => array(),
'label_contacts' => t('All Connected Channels'),
'label_contacts' => t('Not in this group'),
'contacts' => array(),
);
$sec_token = addslashes(get_form_security_token('group_member_change'));
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : false);
$textmode = (($switchtotext && (count($members) > $switchtotext)) ? true : 'card');
foreach($members as $member) {
if($member['xchan_url']) {
$member['archived'] = (intval($member['abook_archived']) ? true : false);
@ -219,7 +252,7 @@ class Group extends \Zotlabs\Web\Controller {
);
if(count($r)) {
$textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : false);
$textmode = (($switchtotext && (count($r) > $switchtotext)) ? true : 'card');
foreach($r as $member) {
if(! in_array($member['xchan_hash'],$preselected)) {
$member['archived'] = (intval($member['abook_archived']) ? true : false);
@ -230,7 +263,7 @@ class Group extends \Zotlabs\Web\Controller {
}
$context['$groupeditor'] = $groupeditor;
$context['$desc'] = t('Click on a channel to add or remove.');
$context['$desc'] = t('Click a channel to toggle membership');
if($change) {
$tpl = get_markup_template('groupeditor.tpl');

View file

@ -8,6 +8,9 @@ class Collections {
function widget($args) {
if(argc() < 2)
return;
$mode = ((array_key_exists('mode',$args)) ? $args['mode'] : 'conversation');
switch($mode) {
case 'conversation':

6
app/group.apd Normal file
View file

@ -0,0 +1,6 @@
version: 1
url: $baseurl/group
requires: local_channel
name: Privacy Groups
photo: icon:users
categories: Networking

View file

@ -279,14 +279,6 @@ function group_side($every="connections",$each="group",$edit = false, $group_id
}
$groups = array();
$groups[] = array(
'text' => t('All Channels'),
'id' => 0,
'selected' => (($group_id == 0) ? 'group-selected' : ''),
'href' => $every . (($every === 'network') ? '?f=&gid=0' : ''),
);
$r = q("SELECT * FROM groups WHERE deleted = 0 AND uid = %d ORDER BY gname ASC",
intval($_SESSION['uid'])

View file

@ -1018,21 +1018,30 @@ function magiclink_url($observer,$myaddr,$url) {
function micropro($contact, $redirect = false, $class = '', $textmode = false) {
function micropro($contact, $redirect = false, $class = '', $mode = false) {
if($contact['click'])
$url = '#';
else
$url = chanlink_hash($contact['xchan_hash']);
return replace_macros(get_markup_template(($textmode)?'micropro_txt.tpl':'micropro_img.tpl'),array(
$tpl = 'micropro_img.tpl';
if($mode === true)
$tpl = 'micropro_txt.tpl';
if($mode === 'card')
$tpl = 'micropro_card.tpl';
return replace_macros(get_markup_template($tpl), array(
'$click' => (($contact['click']) ? $contact['click'] : ''),
'$class' => $class . (($contact['archived']) ? ' archived' : ''),
'$oneway' => (($contact['oneway']) ? true : false),
'$url' => $url,
'$photo' => $contact['xchan_photo_s'],
'$name' => $contact['xchan_name'],
'$addr' => $contact['xchan_addr'],
'$title' => $contact['xchan_name'] . ' [' . $contact['xchan_addr'] . ']',
'$network' => sprintf(t('Network: %s'), $contact['xchan_network'])
));
}

View file

@ -1,66 +1,19 @@
#group-new-submit-wrapper {
margin-top: 30px;
}
/*
#group-edit-form > label {
float: left;
width: 300px;
.mpall,
.mpgroup {
line-height: 1.2;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
#group-edit-form input {
float: left;
width: 175px;
#groups-index th:nth-child(1),
#groups-index td:nth-child(1){
white-space: nowrap;
padding: 7px 3px 7px 10px;
}
#group-edit-form .field {
clear: both;
}
*/
#group-edit-submit-wrapper input {
clear: both;
width: 100px;
}
#group-edit-select-end {
clear: both;
}
/*
#group-edit-name-label {
float: left;
width: 175px;
margin-top: 20px;
margin-bottom: 20px;
}
#group-edit-name {
float: left;
width: 225px;
margin-top: 20px;
margin-bottom: 20px;
}
#group-edit-name-wrapper {
}
*/
#group_members_select_label {
display: block;
float: left;
width: 175px;
}
.group_members_select {
float: left;
width: 230px;
overflow: auto;
}
#group_members_select_end {
clear: both;
}
#group-edit-name-end {
clear: both;
#groups-index th:nth-child(2),
#groups-index td:nth-child(2){
text-align: center;
padding: 7px 10px 7px 7px;
}

View file

@ -693,31 +693,6 @@ nav .acpopup {
margin-bottom: 15px;
}
#group-members {
margin-top: 20px;
padding: 10px;
height: 250px;
overflow: auto;
border: 1px solid #ddd;
}
#group-separator {
margin-top: 10px;
margin-bottom: 10px;
}
#group-all-contacts {
padding: 10px;
height: 450px;
overflow: auto;
border: 1px solid #ddd;
}
#group-edit-desc {
margin-top: 15px;
}
#prof-members {
margin-top: 20px;
padding: 10px;
@ -830,7 +805,7 @@ div.jGrowl div.jGrowl-notification {
.dropdown-notification,
.notification,
.member-item {
line-height: 1.1em;
line-height: 1.2em;
font-size: 0.75rem;
overflow: hidden;
text-overflow: ellipsis;
@ -1177,6 +1152,7 @@ img.mail-conv-sender-photo {
.wall-item-ago,
.dropdown-sub-text {
color: #777;
display: block;
}
.wall-item-content,
@ -1416,6 +1392,9 @@ main.fullscreen .generic-content-wrapper {
main.fullscreen .section-title-wrapper {
border-radius: 0px;
position: sticky;
top: 0;
z-index: 1020;
}
main.fullscreen .section-content-wrapper,
@ -1429,6 +1408,7 @@ main.fullscreen .section-content-wrapper-np {
.atoken-index-row:hover td,
.chatroom-index-row:hover td,
.group-index-row:hover td,
.wikis-index-row:hover td,
.locs-index-row:hover td,
[id^="cloud-index-"]:hover td,

View file

@ -1,26 +1,30 @@
<div class="generic-content-wrapper-styled">
<h2>{{$title}}</h2>
<div id="group-edit-wrapper" >
<form action="group/{{$gid}}" id="group-edit-form" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
{{if $drop}}{{$drop}}{{/if}}
<div id="group-edit-submit-wrapper" >
<input type="submit" name="submit" value="{{$submit}}" >
<div class="generic-content-wrapper">
<div class="section-title-wrapper">
<div class="float-right">
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="openClose('group_tools')"><i class="fa fa-pencil"></i> {{$details_label}}</button>
<button id="fullscreen-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen();"><i class="fa fa-expand"></i></button>
<button id="inline-btn" type="button" class="btn btn-outline-secondary btn-sm" onclick="makeFullScreen(false);"><i class="fa fa-compress"></i></button>
</div>
<h2>{{$title}}</h2>
</div>
<div id="group_tools" class="clearfix section-content-tools-wrapper" style="display: none">
<form action="group/{{$gid}}" id="group-edit-form" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token_edit}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
<a href="group/drop/{{$gid}}?t={{$form_security_token_drop}}" onclick="return confirmDelete();" class="btn btn-sm btn-danger">
{{$delete}}
</a>
<button type="submit" name="submit" class="btn btn-sm btn-primary float-right">{{$submit}}</button>
</form>
</div>
<div class="section-content-info-wrapper">
{{$desc}}
</div>
<div class="section-content-wrapper">
<div id="group-update-wrapper" class="clearfix">
{{include file="groupeditor.tpl"}}
</div>
<div id="group-edit-select-end" ></div>
</form>
</div>
{{if $groupeditor}}
<div id="group-update-wrapper">
{{include file="groupeditor.tpl"}}
</div>
{{/if}}
{{if $desc}}<div id="group-edit-desc">{{$desc}}</div>{{/if}}
</div>

View file

@ -1,16 +1,12 @@
<div id="group">
<h3>{{$groupeditor.label_members}}</h3>
<div id="group-members" class="contact_list">
{{foreach $groupeditor.members as $c}} {{$c}} {{/foreach}}
<div id="contacts" class="list-group float-left w-50 pr-2">
<h3>{{$groupeditor.label_contacts}}</h3>
<div id="group-all-contacts" class="contact_list">
{{foreach $groupeditor.contacts as $m}} {{$m}} {{/foreach}}
</div>
</div>
<div id="group-members-end"></div>
<hr id="group-separator" />
</div>
<div id="contacts">
<h3>{{$groupeditor.label_contacts}}</h3>
<div id="group-all-contacts" class="contact_list">
{{foreach $groupeditor.contacts as $m}} {{$m}} {{/foreach}}
</div>
<div id="group-all-contacts-end"></div>
<div id="group" class="list-group float-right w-50">
<h3>{{$groupeditor.label_members}}</h3>
<div id="group-members" class="contact_list">
{{foreach $groupeditor.members as $c}} {{$c}} {{/foreach}}
</div>
</div>

View file

@ -0,0 +1,6 @@
<a class="list-group-item{{if $class}} {{$class}}{{/if}} fakelink" href="{{if $click}}#{{else}}{{$url}}{{/if}}" {{if $click}}onclick="{{$click}}"{{/if}}>
<img class="menu-img-3" src="{{$photo}}" title="{{$title}}" alt="" />{{if $oneway}}<i class="fa fa-fw fa-minus-circle oneway-overlay text-danger"></i>{{/if}}
<span class="contactname">{{$name}}</span>
<span class="dropdown-sub-text">{{$addr}}</span>
<span class="dropdown-sub-text">{{$network}}</span>
</a>

View file

@ -0,0 +1,28 @@
<div class="generic-content-wrapper">
<div class="clearfix section-title-wrapper">
<button type="button" class="btn btn-sm btn-success float-right" onclick="openClose('group_tools')"><i class="fa fa-plus-circle"></i> {{$add_new_label}}</button>
<h2>{{$title}}</h2>
</div>
<div id="group_tools" class="clearfix section-content-tools-wrapper"{{if ! $new}} style="display: none"{{/if}}>
<form action="group/new" id="group-edit-form" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
<button type="submit" name="submit" class="btn btn-sm btn-primary float-right">{{$submit}}</button>
</form>
</div>
<table id="groups-index">
<tr>
<th width="99%">{{$name_label}}</th>
<th width="1%">{{$count_label}}</th>
</tr>
{{foreach $entries as $group}}
<tr id="groups-index-{{$group.id}}" class="group-index-row">
<td><a href="group/{{$group.id}}">{{$group.name}}</a></td>
<td>{{$group.count}}</td>
</tr>
{{/foreach}}
</table>
</div>