Merge pull request #859 from fabrixxm/manage_contacts
Improvements in contact management
This commit is contained in:
commit
7bd9831c2d
10 changed files with 206 additions and 56 deletions
|
@ -215,13 +215,14 @@ function contact_photo_menu($contact) {
|
||||||
$status_link = $profile_link . "?url=status";
|
$status_link = $profile_link . "?url=status";
|
||||||
$photos_link = $profile_link . "?url=photos";
|
$photos_link = $profile_link . "?url=photos";
|
||||||
$profile_link = $profile_link . "?url=profile";
|
$profile_link = $profile_link . "?url=profile";
|
||||||
$contact_drop_link = $a->get_baseurl() . '/contacts/' . $contact['id'] . '/drop';
|
|
||||||
$pm_url = $a->get_baseurl() . '/message/new/' . $contact['id'];
|
$pm_url = $a->get_baseurl() . '/message/new/' . $contact['id'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id'];
|
$poke_link = $a->get_baseurl() . '/poke/?f=&c=' . $contact['id'];
|
||||||
$contact_url = $a->get_baseurl() . '/contacts/' . $contact['id'];
|
$contact_url = $a->get_baseurl() . '/contacts/' . $contact['id'];
|
||||||
$posts_link = $a->get_baseurl() . '/network/0?nets=all&cid=' . $contact['id'];
|
$posts_link = $a->get_baseurl() . '/network/0?nets=all&cid=' . $contact['id'];
|
||||||
|
$contact_drop_link = $a->get_baseurl() . "/contacts/" . $contact['id'] . '/drop?confirm=1';
|
||||||
|
|
||||||
|
|
||||||
$menu = Array(
|
$menu = Array(
|
||||||
'poke' => array(t("Poke"), $poke_link),
|
'poke' => array(t("Poke"), $poke_link),
|
||||||
|
|
147
mod/contacts.php
147
mod/contacts.php
|
@ -67,11 +67,61 @@ function contacts_init(&$a) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function contacts_batch_actions(&$a){
|
||||||
|
$contacts_id = $_POST['contact_batch'];
|
||||||
|
if (!is_array($contacts_id)) return;
|
||||||
|
|
||||||
|
$orig_records = q("SELECT * FROM `contact` WHERE `id` IN (%s) AND `uid` = %d AND `self` = 0",
|
||||||
|
implode(",", $contacts_id),
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
|
||||||
|
$count_actions=0;
|
||||||
|
foreach($orig_records as $orig_record) {
|
||||||
|
$contact_id = $orig_record['id'];
|
||||||
|
if (x($_POST, 'contacts_batch_update')) {
|
||||||
|
_contact_update($contact_id);
|
||||||
|
$count_actions++;
|
||||||
|
}
|
||||||
|
if (x($_POST, 'contacts_batch_block')) {
|
||||||
|
$r = _contact_block($contact_id, $orig_record);
|
||||||
|
if ($r) $count_actions++;
|
||||||
|
}
|
||||||
|
if (x($_POST, 'contacts_batch_ignore')) {
|
||||||
|
$r = _contact_ignore($contact_id, $orig_record);
|
||||||
|
if ($r) $count_actions++;
|
||||||
|
}
|
||||||
|
if (x($_POST, 'contacts_batch_archive')) {
|
||||||
|
$r = _contact_archive($contact_id, $orig_record);
|
||||||
|
if ($r) $count_actions++;
|
||||||
|
}
|
||||||
|
if (x($_POST, 'contacts_batch_drop')) {
|
||||||
|
_contact_drop($contact_id, $orig_record);
|
||||||
|
$count_actions++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($count_actions>0) {
|
||||||
|
info ( sprintf( tt("%d contact edited.", "%d contacts edited", $count_actions), $count_actions) );
|
||||||
|
}
|
||||||
|
|
||||||
|
if(x($_SESSION,'return_url'))
|
||||||
|
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||||
|
else
|
||||||
|
goaway($a->get_baseurl(true) . '/contacts');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function contacts_post(&$a) {
|
function contacts_post(&$a) {
|
||||||
|
|
||||||
if(! local_user())
|
if(! local_user())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if ($a->argv[1]==="batch") {
|
||||||
|
contacts_batch_actions($a);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$contact_id = intval($a->argv[1]);
|
$contact_id = intval($a->argv[1]);
|
||||||
if(! $contact_id)
|
if(! $contact_id)
|
||||||
return;
|
return;
|
||||||
|
@ -134,6 +184,49 @@ function contacts_post(&$a) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*contact actions*/
|
||||||
|
function _contact_update($contact_id) {
|
||||||
|
// pull feed and consume it, which should subscribe to the hub.
|
||||||
|
proc_run('php',"include/poller.php","$contact_id");
|
||||||
|
}
|
||||||
|
function _contact_block($contact_id, $orig_record) {
|
||||||
|
$blocked = (($orig_record['blocked']) ? 0 : 1);
|
||||||
|
$r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||||
|
intval($blocked),
|
||||||
|
intval($contact_id),
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
return $r;
|
||||||
|
|
||||||
|
}
|
||||||
|
function _contact_ignore($contact_id, $orig_record) {
|
||||||
|
$readonly = (($orig_record['readonly']) ? 0 : 1);
|
||||||
|
$r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||||
|
intval($readonly),
|
||||||
|
intval($contact_id),
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
function _contact_archive($contact_id, $orig_record) {
|
||||||
|
$archived = (($orig_record['archive']) ? 0 : 1);
|
||||||
|
$r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
||||||
|
intval($archived),
|
||||||
|
intval($contact_id),
|
||||||
|
intval(local_user())
|
||||||
|
);
|
||||||
|
if ($archived) {
|
||||||
|
q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact_id), intval(local_user()));
|
||||||
|
}
|
||||||
|
return $r;
|
||||||
|
}
|
||||||
|
function _contact_drop($contact_id, $orig_record) {
|
||||||
|
require_once('include/Contact.php');
|
||||||
|
$a = get_app();
|
||||||
|
|
||||||
|
terminate_friendship($a->user,$a->contact,$orig_record);
|
||||||
|
contact_remove($orig_record['id']);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function contacts_content(&$a) {
|
function contacts_content(&$a) {
|
||||||
|
@ -168,57 +261,38 @@ function contacts_content(&$a) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if($cmd === 'update') {
|
if($cmd === 'update') {
|
||||||
|
_contact_update($contact_id);
|
||||||
// pull feed and consume it, which should subscribe to the hub.
|
|
||||||
proc_run('php',"include/poller.php","$contact_id");
|
|
||||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
if($cmd === 'block') {
|
if($cmd === 'block') {
|
||||||
$blocked = (($orig_record[0]['blocked']) ? 0 : 1);
|
$r = _contact_block($contact_id, $orig_record[0]);
|
||||||
$r = q("UPDATE `contact` SET `blocked` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
|
||||||
intval($blocked),
|
|
||||||
intval($contact_id),
|
|
||||||
intval(local_user())
|
|
||||||
);
|
|
||||||
if($r) {
|
if($r) {
|
||||||
//notice( t('Contact has been ') . (($blocked) ? t('blocked') : t('unblocked')) . EOL );
|
|
||||||
info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
|
info( (($blocked) ? t('Contact has been blocked') : t('Contact has been unblocked')) . EOL );
|
||||||
}
|
}
|
||||||
|
|
||||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||||
return; // NOTREACHED
|
return; // NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
if($cmd === 'ignore') {
|
if($cmd === 'ignore') {
|
||||||
$readonly = (($orig_record[0]['readonly']) ? 0 : 1);
|
$r = _contact_ignore($contact_id, $orig_record[0]);
|
||||||
$r = q("UPDATE `contact` SET `readonly` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
|
||||||
intval($readonly),
|
|
||||||
intval($contact_id),
|
|
||||||
intval(local_user())
|
|
||||||
);
|
|
||||||
if($r) {
|
if($r) {
|
||||||
info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
|
info( (($readonly) ? t('Contact has been ignored') : t('Contact has been unignored')) . EOL );
|
||||||
}
|
}
|
||||||
|
|
||||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||||
return; // NOTREACHED
|
return; // NOTREACHED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if($cmd === 'archive') {
|
if($cmd === 'archive') {
|
||||||
$archived = (($orig_record[0]['archive']) ? 0 : 1);
|
$r = _contact_archive($contact_id, $orig_record[0]);
|
||||||
$r = q("UPDATE `contact` SET `archive` = %d WHERE `id` = %d AND `uid` = %d LIMIT 1",
|
|
||||||
intval($archived),
|
|
||||||
intval($contact_id),
|
|
||||||
intval(local_user())
|
|
||||||
);
|
|
||||||
if ($archived) {
|
|
||||||
q("UPDATE `item` SET `private` = 2 WHERE `contact-id` = %d AND `uid` = %d", intval($contact_id), intval(local_user()));
|
|
||||||
}
|
|
||||||
if($r) {
|
if($r) {
|
||||||
//notice( t('Contact has been ') . (($archived) ? t('archived') : t('unarchived')) . EOL );
|
|
||||||
info( (($archived) ? t('Contact has been archived') : t('Contact has been unarchived')) . EOL );
|
info( (($archived) ? t('Contact has been archived') : t('Contact has been unarchived')) . EOL );
|
||||||
}
|
}
|
||||||
|
|
||||||
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
goaway($a->get_baseurl(true) . '/contacts/' . $contact_id);
|
||||||
return; // NOTREACHED
|
return; // NOTREACHED
|
||||||
}
|
}
|
||||||
|
@ -251,15 +325,13 @@ function contacts_content(&$a) {
|
||||||
}
|
}
|
||||||
// Now check how the user responded to the confirmation query
|
// Now check how the user responded to the confirmation query
|
||||||
if($_REQUEST['canceled']) {
|
if($_REQUEST['canceled']) {
|
||||||
|
if(x($_SESSION,'return_url'))
|
||||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||||
|
else
|
||||||
|
goaway($a->get_baseurl(true) . '/contacts');
|
||||||
}
|
}
|
||||||
|
|
||||||
require_once('include/Contact.php');
|
_contact_drop($contact_id, $orig_record[0]);
|
||||||
|
|
||||||
terminate_friendship($a->user,$a->contact,$orig_record[0]);
|
|
||||||
|
|
||||||
contact_remove($orig_record[0]['id']);
|
|
||||||
info( t('Contact has been removed.') . EOL );
|
info( t('Contact has been removed.') . EOL );
|
||||||
if(x($_SESSION,'return_url'))
|
if(x($_SESSION,'return_url'))
|
||||||
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
goaway($a->get_baseurl(true) . '/' . $_SESSION['return_url']);
|
||||||
|
@ -526,7 +598,7 @@ function contacts_content(&$a) {
|
||||||
$search_txt = dbesc(protect_sprintf(preg_quote($search)));
|
$search_txt = dbesc(protect_sprintf(preg_quote($search)));
|
||||||
$searching = true;
|
$searching = true;
|
||||||
}
|
}
|
||||||
$sql_extra .= (($searching) ? " AND `name` REGEXP '$search_txt' " : "");
|
$sql_extra .= (($searching) ? " AND (name REGEXP '$search_txt' OR url REGEXP '$search_txt' OR nick REGEXP '$search_txt') " : "");
|
||||||
|
|
||||||
if($nets)
|
if($nets)
|
||||||
$sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets));
|
$sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets));
|
||||||
|
@ -604,6 +676,7 @@ function contacts_content(&$a) {
|
||||||
|
|
||||||
$tpl = get_markup_template("contacts-template.tpl");
|
$tpl = get_markup_template("contacts-template.tpl");
|
||||||
$o .= replace_macros($tpl, array(
|
$o .= replace_macros($tpl, array(
|
||||||
|
'$baseurl' => $a->get_baseurl(),
|
||||||
'$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
|
'$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
|
||||||
'$tabs' => $t,
|
'$tabs' => $t,
|
||||||
'$total' => $total,
|
'$total' => $total,
|
||||||
|
@ -613,6 +686,14 @@ function contacts_content(&$a) {
|
||||||
'$submit' => t('Find'),
|
'$submit' => t('Find'),
|
||||||
'$cmd' => $a->cmd,
|
'$cmd' => $a->cmd,
|
||||||
'$contacts' => $contacts,
|
'$contacts' => $contacts,
|
||||||
|
'$contact_drop_confirm' => t('Do you really want to delete this contact?'),
|
||||||
|
'$batch_actions' => array(
|
||||||
|
'contacts_batch_update' => t('Update'),
|
||||||
|
'contacts_batch_block' => t('Block')."/".t("Unblock"),
|
||||||
|
"contacts_batch_ignore" => t('Ignore')."/".t("Unignore"),
|
||||||
|
"contacts_batch_archive" => t('Archive')."/".t("Unarchive"),
|
||||||
|
"contacts_batch_drop" => t('Delete'),
|
||||||
|
),
|
||||||
'$paginate' => paginate($a),
|
'$paginate' => paginate($a),
|
||||||
|
|
||||||
));
|
));
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
{{*
|
|
||||||
* AUTOMATICALLY GENERATED TEMPLATE
|
|
||||||
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
|
|
||||||
*
|
|
||||||
*}}
|
|
||||||
|
|
||||||
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
|
<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
|
||||||
<div class="contact-entry-photo-wrapper" >
|
<div class="contact-entry-photo-wrapper" >
|
||||||
|
@ -12,15 +7,16 @@
|
||||||
|
|
||||||
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
|
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
|
||||||
|
|
||||||
|
<input type="checkbox" class="contact-select" name="contact_batch[]" value="{{$contact.id}}">
|
||||||
{{if $contact.photo_menu}}
|
{{if $contact.photo_menu}}
|
||||||
<span onclick="openClose('contact-photo-menu-{{$contact.id}}');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-{{$contact.id}}">menu</span>
|
<span onclick="openClose('contact-photo-menu-{{$contact.id}}');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-{{$contact.id}}">menu</span>
|
||||||
<div class="contact-photo-menu" id="contact-photo-menu-{{$contact.id}}">
|
<div class="contact-photo-menu" id="contact-photo-menu-{{$contact.id}}">
|
||||||
<ul>
|
<ul>
|
||||||
{{foreach $contact.photo_menu as $c}}
|
{{foreach $contact.photo_menu as $k=>$c}}
|
||||||
{{if $c.2}}
|
{{if $c.2}}
|
||||||
<li><a target="redir" href="{{$c.1}}">{{$c.0}}</a></li>
|
<li><a class="{{$k}}" target="redir" href="{{$c.1}}">{{$c.0}}</a></li>
|
||||||
{{else}}
|
{{else}}
|
||||||
<li><a href="{{$c.1}}">{{$c.0}}</a></li>
|
<li><a class="{{$k}}" href="{{$c.1}}">{{$c.0}}</a></li>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -1,8 +1,4 @@
|
||||||
{{*
|
|
||||||
* AUTOMATICALLY GENERATED TEMPLATE
|
|
||||||
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
|
|
||||||
*
|
|
||||||
*}}
|
|
||||||
<h1>{{$header}}{{if $total}} ({{$total}}){{/if}}</h1>
|
<h1>{{$header}}{{if $total}} ({{$total}}){{/if}}</h1>
|
||||||
|
|
||||||
{{if $finding}}<h4>{{$finding}}</h4>{{/if}}
|
{{if $finding}}<h4>{{$finding}}</h4>{{/if}}
|
||||||
|
@ -18,11 +14,44 @@
|
||||||
|
|
||||||
{{$tabs}}
|
{{$tabs}}
|
||||||
|
|
||||||
|
<form action="{{$baseurl}}/contacts/batch/" method="POST">
|
||||||
{{foreach $contacts as $contact}}
|
{{foreach $contacts as $contact}}
|
||||||
{{include file="contact_template.tpl"}}
|
{{include file="contact_template.tpl"}}
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
<div id="contact-edit-end"></div>
|
<div id="contact-edit-end"></div>
|
||||||
|
<div class="submit">
|
||||||
|
{{foreach $batch_actions as $n=>$l}}
|
||||||
|
<input class="batch-action" name="{{$n}}" value="{{$l}}" type="submit">
|
||||||
|
{{/foreach}}
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
// javascript dialog to batch actions
|
||||||
|
$(".batch-action").click(function(e){
|
||||||
|
if (confirm($(this).attr('value')+" ?")) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// add javascript confirm dialog to "drop" links. Plain html url have "?confirm=1" to show confirmation form, we need to remove it
|
||||||
|
$(".drop").each(function() {
|
||||||
|
$(this).attr('href', $(this).attr('href').replace("confirm=1","") );
|
||||||
|
$(this).click(function(e){
|
||||||
|
if (confirm("{{$contact_drop_confirm}}")) {
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
e.preventDefault();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
{{$paginate}}
|
{{$paginate}}
|
||||||
|
|
||||||
|
|
|
@ -1617,6 +1617,9 @@ input#dfrn-url {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.contact-select { position: absolute; top: 64px; left:64px; display:none; }
|
||||||
|
.contact-select:checked,
|
||||||
|
.contact-entry-photo:hover .contact-select { display:block; }
|
||||||
|
|
||||||
.contact-photo-menu-button {
|
.contact-photo-menu-button {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
|
|
|
@ -1349,6 +1349,19 @@ span[id^="showmore-wrap"] {
|
||||||
.contact-photo-wrapper {
|
.contact-photo-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
.contact-select {
|
||||||
|
position: absolute;
|
||||||
|
top: 64px;
|
||||||
|
left: 64px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.contact-select:checked,
|
||||||
|
.contact-photo:hover .contact-select {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.submit {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
|
|
|
@ -1349,6 +1349,19 @@ span[id^="showmore-wrap"] {
|
||||||
.contact-photo-wrapper {
|
.contact-photo-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
.contact-select {
|
||||||
|
position: absolute;
|
||||||
|
top: 64px;
|
||||||
|
left: 64px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.contact-select:checked,
|
||||||
|
.contact-photo:hover .contact-select {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.submit {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
|
|
|
@ -1349,6 +1349,19 @@ span[id^="showmore-wrap"] {
|
||||||
.contact-photo-wrapper {
|
.contact-photo-wrapper {
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
.contact-select {
|
||||||
|
position: absolute;
|
||||||
|
top: 64px;
|
||||||
|
left: 64px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
.contact-select:checked,
|
||||||
|
.contact-photo:hover .contact-select {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.submit {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
|
|
|
@ -528,6 +528,7 @@ section {
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 32px; height: 32px;
|
width: 32px; height: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-photo-menu-button {
|
.contact-photo-menu-button {
|
||||||
top: 15px !important;
|
top: 15px !important;
|
||||||
left: 0px !important;
|
left: 0px !important;
|
||||||
|
@ -738,6 +739,10 @@ span[id^="showmore-wrap"] {
|
||||||
|
|
||||||
|
|
||||||
.contact-photo-wrapper { position: relative; }
|
.contact-photo-wrapper { position: relative; }
|
||||||
|
.contact-select { position: absolute; top:64px; left:64px; display:none; }
|
||||||
|
.contact-select:checked,
|
||||||
|
.contact-photo:hover .contact-select { display:block; }
|
||||||
|
.submit { clear: both; }
|
||||||
.contact-photo {
|
.contact-photo {
|
||||||
width: 48px; height: 48px;
|
width: 48px; height: 48px;
|
||||||
img { width: 48px; height: 48px; }
|
img { width: 48px; height: 48px; }
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
{{*
|
|
||||||
* AUTOMATICALLY GENERATED TEMPLATE
|
|
||||||
* DO NOT EDIT THIS FILE, CHANGES WILL BE OVERWRITTEN
|
|
||||||
*
|
|
||||||
*}}
|
|
||||||
|
|
||||||
<div class="contact-wrapper" id="contact-entry-wrapper-{{$id}}" >
|
<div class="contact-wrapper" id="contact-entry-wrapper-{{$id}}" >
|
||||||
<div class="contact-photo-wrapper" >
|
<div class="contact-photo-wrapper" >
|
||||||
|
@ -12,6 +7,7 @@
|
||||||
|
|
||||||
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
|
<a href="{{$contact.url}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
|
||||||
|
|
||||||
|
<input type="checkbox" class="contact-select" name="contact_batch[]" value="{{$contact.id}}">
|
||||||
{{if $contact.photo_menu}}
|
{{if $contact.photo_menu}}
|
||||||
<a href="#" rel="#contact-photo-menu-{{$contact.id}}" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-{{$contact.id}}">menu</a>
|
<a href="#" rel="#contact-photo-menu-{{$contact.id}}" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-{{$contact.id}}">menu</a>
|
||||||
<ul class="contact-photo-menu menu-popup" id="contact-photo-menu-{{$contact.id}}">
|
<ul class="contact-photo-menu menu-popup" id="contact-photo-menu-{{$contact.id}}">
|
||||||
|
|
Loading…
Reference in a new issue