Merge remote-tracking branch 'upstream/dev' into dev
This commit is contained in:
commit
bc0d4f28ef
@ -43,6 +43,10 @@ class Events extends \Zotlabs\Web\Controller {
|
|||||||
$adjust = intval($_POST['adjust']);
|
$adjust = intval($_POST['adjust']);
|
||||||
$nofinish = intval($_POST['nofinish']);
|
$nofinish = intval($_POST['nofinish']);
|
||||||
|
|
||||||
|
$timezone = ((x($_POST,'timezone_select')) ? notags(trim($_POST['timezone_select'])) : '');
|
||||||
|
|
||||||
|
$tz = (($timezone) ? $timezone : date_default_timezone_get());
|
||||||
|
|
||||||
$categories = escape_tags(trim($_POST['category']));
|
$categories = escape_tags(trim($_POST['category']));
|
||||||
|
|
||||||
// only allow editing your own events.
|
// only allow editing your own events.
|
||||||
@ -71,9 +75,9 @@ class Events extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
|
|
||||||
if($adjust) {
|
if($adjust) {
|
||||||
$start = datetime_convert(date_default_timezone_get(),'UTC',$start);
|
$start = datetime_convert($tz,'UTC',$start);
|
||||||
if(! $nofinish)
|
if(! $nofinish)
|
||||||
$finish = datetime_convert(date_default_timezone_get(),'UTC',$finish);
|
$finish = datetime_convert($tz,'UTC',$finish);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$start = datetime_convert('UTC','UTC',$start);
|
$start = datetime_convert('UTC','UTC',$start);
|
||||||
@ -478,6 +482,8 @@ class Events extends \Zotlabs\Web\Controller {
|
|||||||
'$allow_gid' => acl2json($permissions['allow_gid']),
|
'$allow_gid' => acl2json($permissions['allow_gid']),
|
||||||
'$deny_cid' => acl2json($permissions['deny_cid']),
|
'$deny_cid' => acl2json($permissions['deny_cid']),
|
||||||
'$deny_gid' => acl2json($permissions['deny_gid']),
|
'$deny_gid' => acl2json($permissions['deny_gid']),
|
||||||
|
'$tz_choose' => feature_enabled(local_channel(),'event_tz_select'),
|
||||||
|
'$timezone' => array('timezone_select' , t('Timezone:'), date_default_timezone_get(), '', get_timezones()),
|
||||||
|
|
||||||
'$lockstate' => (($acl->is_private()) ? 'lock' : 'unlock'),
|
'$lockstate' => (($acl->is_private()) ? 'lock' : 'unlock'),
|
||||||
|
|
||||||
|
@ -243,6 +243,7 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
check_form_security_token_redirectOnErr('/profiles', 'profile_edit');
|
check_form_security_token_redirectOnErr('/profiles', 'profile_edit');
|
||||||
|
|
||||||
|
|
||||||
$is_default = (($orig[0]['is_default']) ? 1 : 0);
|
$is_default = (($orig[0]['is_default']) ? 1 : 0);
|
||||||
|
|
||||||
$profile_name = notags(trim($_POST['profile_name']));
|
$profile_name = notags(trim($_POST['profile_name']));
|
||||||
@ -315,6 +316,15 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
|
|
||||||
$hide_friends = ((intval($_POST['hide_friends'])) ? 1: 0);
|
$hide_friends = ((intval($_POST['hide_friends'])) ? 1: 0);
|
||||||
|
|
||||||
|
|
||||||
|
$orig_vcard = (($orig[0]['profile_vcard']) ? \Sabre\VObject\Reader::read($orig[0]['profile_vcard']) : null);
|
||||||
|
|
||||||
|
$_REQUEST['fn'] = $name;
|
||||||
|
$_REQUEST['title'] = $pdesc;
|
||||||
|
|
||||||
|
$profile_vcard = update_vcard($_REQUEST,$orig_vcard);
|
||||||
|
|
||||||
|
|
||||||
require_once('include/text.php');
|
require_once('include/text.php');
|
||||||
linkify_tags($a, $likes, local_channel());
|
linkify_tags($a, $likes, local_channel());
|
||||||
linkify_tags($a, $dislikes, local_channel());
|
linkify_tags($a, $dislikes, local_channel());
|
||||||
@ -511,7 +521,8 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
romance = '%s',
|
romance = '%s',
|
||||||
employment = '%s',
|
employment = '%s',
|
||||||
education = '%s',
|
education = '%s',
|
||||||
hide_friends = %d
|
hide_friends = %d,
|
||||||
|
profile_vcard = '%s'
|
||||||
WHERE id = %d AND uid = %d",
|
WHERE id = %d AND uid = %d",
|
||||||
dbesc($profile_name),
|
dbesc($profile_name),
|
||||||
dbesc($name),
|
dbesc($name),
|
||||||
@ -546,6 +557,7 @@ class Profiles extends \Zotlabs\Web\Controller {
|
|||||||
dbesc($work),
|
dbesc($work),
|
||||||
dbesc($education),
|
dbesc($education),
|
||||||
intval($hide_friends),
|
intval($hide_friends),
|
||||||
|
dbesc($profile_vcard),
|
||||||
intval(argv(1)),
|
intval(argv(1)),
|
||||||
intval(local_channel())
|
intval(local_channel())
|
||||||
);
|
);
|
||||||
|
23
doc/roadmap_hz3.md
Normal file
23
doc/roadmap_hz3.md
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
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
|
@ -157,6 +157,15 @@ function get_features($filtered = true) {
|
|||||||
feature_level('smart_birthdays',2),
|
feature_level('smart_birthdays',2),
|
||||||
],
|
],
|
||||||
|
|
||||||
|
[
|
||||||
|
'event_tz_select',
|
||||||
|
t('Event Timezone Selection'),
|
||||||
|
t('Allow event creation in timezones other than your own.'),
|
||||||
|
false,
|
||||||
|
get_config('feature_lock','event_tz_select'),
|
||||||
|
feature_level('event_tz_select',2),
|
||||||
|
],
|
||||||
|
|
||||||
[
|
[
|
||||||
'advanced_dirsearch',
|
'advanced_dirsearch',
|
||||||
t('Advanced Directory Search'),
|
t('Advanced Directory Search'),
|
||||||
|
@ -5,3 +5,111 @@
|
|||||||
.profile-thing-img {
|
.profile-thing-img {
|
||||||
margin: 7px 0px;
|
margin: 7px 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.vcard-header {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 7px 10px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-header:hover,
|
||||||
|
.vcard-header.active {
|
||||||
|
background-color: rgb(238,238,238);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-header.active:hover {
|
||||||
|
cursor: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-add-field {
|
||||||
|
margin-top: 8px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-cancel {
|
||||||
|
margin: 6px 10px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
color: #777;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-nophoto {
|
||||||
|
display: inline-block;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-photo {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-fn-preview,
|
||||||
|
input.vcard-fn {
|
||||||
|
font-size: 16px !important;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-email-preview,
|
||||||
|
.vcard-tel-preview {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.vcard-fn,
|
||||||
|
#create_form,
|
||||||
|
#more_block {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.vcard-fn,
|
||||||
|
.vcard-fn-create input,
|
||||||
|
.vcard-org input,
|
||||||
|
.vcard-title input,
|
||||||
|
.vcard-tel input,
|
||||||
|
.vcard-email input,
|
||||||
|
.vcard-impp input,
|
||||||
|
.vcard-url input,
|
||||||
|
.vcard-adr input,
|
||||||
|
.vcard-note input {
|
||||||
|
padding: 0px;
|
||||||
|
margin-left: 5px;
|
||||||
|
border-width: 0px 0px 1px 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
background-color: transparent;
|
||||||
|
min-width: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#template-form-vcard-org,
|
||||||
|
#template-form-vcard-title,
|
||||||
|
#template-form-vcard-tel,
|
||||||
|
#template-form-vcard-email,
|
||||||
|
#template-form-vcard-impp,
|
||||||
|
#template-form-vcard-url,
|
||||||
|
#template-form-vcard-adr,
|
||||||
|
#template-form-vcard-note {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connphone {
|
||||||
|
color: green;
|
||||||
|
}
|
||||||
|
@ -29,3 +29,110 @@
|
|||||||
height: 48px;
|
height: 48px;
|
||||||
margin: 10px 0px;
|
margin: 10px 0px;
|
||||||
}
|
}
|
||||||
|
.vcard-header {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 7px 10px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-header:hover,
|
||||||
|
.vcard-header.active {
|
||||||
|
background-color: rgb(238,238,238);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-header.active:hover {
|
||||||
|
cursor: initial;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-add-field {
|
||||||
|
margin-top: 8px;
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-cancel {
|
||||||
|
margin: 6px 10px;
|
||||||
|
height: 32px;
|
||||||
|
line-height: 32px;
|
||||||
|
color: #777;
|
||||||
|
font-size: 16px;
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
display: none;
|
||||||
|
float: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-info {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-nophoto {
|
||||||
|
display: inline-block;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-photo {
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
border-radius: 4px;
|
||||||
|
border: 1px solid #ccc;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-fn-preview,
|
||||||
|
input.vcard-fn {
|
||||||
|
font-size: 16px !important;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vcard-email-preview,
|
||||||
|
.vcard-tel-preview {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.vcard-fn,
|
||||||
|
#create_form,
|
||||||
|
#more_block {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
input.vcard-fn,
|
||||||
|
.vcard-fn-create input,
|
||||||
|
.vcard-org input,
|
||||||
|
.vcard-title input,
|
||||||
|
.vcard-tel input,
|
||||||
|
.vcard-email input,
|
||||||
|
.vcard-impp input,
|
||||||
|
.vcard-url input,
|
||||||
|
.vcard-adr input,
|
||||||
|
.vcard-note input {
|
||||||
|
padding: 0px;
|
||||||
|
margin-left: 5px;
|
||||||
|
border-width: 0px 0px 1px 0px;
|
||||||
|
border-radius: 0px;
|
||||||
|
background-color: transparent;
|
||||||
|
min-width: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#template-form-vcard-org,
|
||||||
|
#template-form-vcard-title,
|
||||||
|
#template-form-vcard-tel,
|
||||||
|
#template-form-vcard-email,
|
||||||
|
#template-form-vcard-impp,
|
||||||
|
#template-form-vcard-url,
|
||||||
|
#template-form-vcard-adr,
|
||||||
|
#template-form-vcard-note {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.connphone {
|
||||||
|
color: green;
|
||||||
|
}
|
@ -1,4 +1,70 @@
|
|||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
$('form').areYouSure(); // Warn user about unsaved settings
|
$('form').areYouSure(); // Warn user about unsaved settings
|
||||||
$('textarea').bbco_autocomplete('bbcode');
|
$('textarea').bbco_autocomplete('bbcode');
|
||||||
|
|
||||||
|
$(document).on('click', '.vcard-header, .vcard-cancel-btn', updateView);
|
||||||
|
$(document).on('click', '.add-field', doAdd);
|
||||||
|
$(document).on('click', '.remove-field', doRemove);
|
||||||
|
|
||||||
|
function updateView() {
|
||||||
|
var id = $(this).data('id');
|
||||||
|
var action = $(this).data('action');
|
||||||
|
var header = $('#vcard-header-' + id);
|
||||||
|
var cancel = $('#vcard-cancel-' + id);
|
||||||
|
var addField = $('#vcard-add-field-' + id);
|
||||||
|
var info = $('#vcard-info-' + id);
|
||||||
|
var vcardPreview = $('#vcard-preview-' + id);
|
||||||
|
var fn = $('#vcard-fn-' + id);
|
||||||
|
|
||||||
|
if(action === 'open') {
|
||||||
|
$(header).addClass('active');
|
||||||
|
$(cancel).show();
|
||||||
|
$(addField).show();
|
||||||
|
$(info).show();
|
||||||
|
$(fn).show();
|
||||||
|
$(vcardPreview).hide();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(header).removeClass('active');
|
||||||
|
$(cancel).hide();
|
||||||
|
$(addField).hide();
|
||||||
|
$(info).hide();
|
||||||
|
$(fn).hide();
|
||||||
|
$(vcardPreview).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function doAdd() {
|
||||||
|
var what = $(this).data('add');
|
||||||
|
var id = $(this).data('id');
|
||||||
|
var element = '#template-form-' + what;
|
||||||
|
var where = '#abook-edit-form';
|
||||||
|
|
||||||
|
$(element + ' .remove-field').attr('data-id', id)
|
||||||
|
|
||||||
|
if(what === 'vcard-adr') {
|
||||||
|
var adrCount = $(where + ' .form-' + what).length;
|
||||||
|
var attrName = 'adr[' + adrCount + '][]';
|
||||||
|
$(element + ' input').attr('name', attrName);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') {
|
||||||
|
$(where + ' .add-' + what).hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
$(element).clone().removeAttr('id').appendTo(where + ' .form-' + what + '-wrapper');
|
||||||
|
}
|
||||||
|
|
||||||
|
function doRemove() {
|
||||||
|
var what = $(this).data('remove');
|
||||||
|
var element = $(this).parents('div.form-' + what);
|
||||||
|
var where = '#abook_edit_form' + $(this).data('id');
|
||||||
|
|
||||||
|
if(what === 'vcard-org' || what === 'vcard-title' || what === 'vcard-note') {
|
||||||
|
$(where + ' .add-' + what).show()
|
||||||
|
}
|
||||||
|
|
||||||
|
$(element).remove();
|
||||||
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -10,6 +10,10 @@
|
|||||||
|
|
||||||
{{include file="field_input.tpl" field=$summary}}
|
{{include file="field_input.tpl" field=$summary}}
|
||||||
|
|
||||||
|
{{if $tz_choose}}
|
||||||
|
{{include file="field_select_grouped.tpl" field=$timezone}}
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
{{$s_dsel}}
|
{{$s_dsel}}
|
||||||
|
|
||||||
{{$f_dsel}}
|
{{$f_dsel}}
|
||||||
|
@ -368,7 +368,7 @@
|
|||||||
$.post("embedphotos/album", {name: album},
|
$.post("embedphotos/album", {name: album},
|
||||||
function(data) {
|
function(data) {
|
||||||
if (data['status']) {
|
if (data['status']) {
|
||||||
$('#embedPhotoModalLabel').html('{{$modalchooseimages}}');
|
$('#embedPhotoModalLabel').html("{{$modalchooseimages}}");
|
||||||
$('#embedPhotoModalBodyAlbumDialog').html('\
|
$('#embedPhotoModalBodyAlbumDialog').html('\
|
||||||
<div><ul class="nav">\n\
|
<div><ul class="nav">\n\
|
||||||
<li><a href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\
|
<li><a href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\
|
||||||
@ -402,7 +402,7 @@
|
|||||||
$('#editor').val(currentContent + ddata['photolink']);
|
$('#editor').val(currentContent + ddata['photolink']);
|
||||||
{{/if}}
|
{{/if}}
|
||||||
} else {
|
} else {
|
||||||
window.console.log('{{$modalerrorlink}}' + ':' + ddata['errormsg']);
|
window.console.log("{{$modalerrorlink}}" + ':' + ddata['errormsg']);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
@ -413,7 +413,7 @@
|
|||||||
$('#embedPhotoModal').modal('hide');
|
$('#embedPhotoModal').modal('hide');
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
window.console.log('{{$modalerroralbum}} ' + JSON.stringify(album) + ':' + data['errormsg']);
|
window.console.log("{{$modalerroralbum}} " + JSON.stringify(album) + ':' + data['errormsg']);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
@ -425,19 +425,19 @@
|
|||||||
function(data) {
|
function(data) {
|
||||||
if (data['status']) {
|
if (data['status']) {
|
||||||
var albums = data['albumlist']; //JSON.parse(data['albumlist']);
|
var albums = data['albumlist']; //JSON.parse(data['albumlist']);
|
||||||
$('#embedPhotoModalLabel').html('{{$modalchoosealbum}}');
|
$('#embedPhotoModalLabel').html("{{$modalchoosealbum}}");
|
||||||
$('#embedPhotoModalBodyAlbumList').html('<ul class="nav"></ul>');
|
$('#embedPhotoModalBodyAlbumList').html('<ul class="nav"></ul>');
|
||||||
for(var i=0; i<albums.length; i++) {
|
for(var i=0; i<albums.length; i++) {
|
||||||
var albumName = albums[i].text;
|
var albumName = albums[i].text;
|
||||||
var albumLink = '<li>';
|
var albumLink = '<li>';
|
||||||
albumLink += '<a href="#" onclick="choosePhotoFromAlbum(\'' + albumName + '\');return false;">' + albumName + '</a>';
|
albumLink += '<a href="#" onclick="choosePhotoFromAlbum("' + albumName + '");return false;">' + albumName + '</a>';
|
||||||
albumLink += '</li>';
|
albumLink += '</li>';
|
||||||
$('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink);
|
$('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink);
|
||||||
}
|
}
|
||||||
$('#embedPhotoModalBodyAlbumDialog').addClass('hide');
|
$('#embedPhotoModalBodyAlbumDialog').addClass('hide');
|
||||||
$('#embedPhotoModalBodyAlbumListDialog').removeClass('hide');
|
$('#embedPhotoModalBodyAlbumListDialog').removeClass('hide');
|
||||||
} else {
|
} else {
|
||||||
window.console.log('{{$modalerrorlist}}' + ':' + data['errormsg']);
|
window.console.log("{{$modalerrorlist}}" + ':' + data['errormsg']);
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
Reference in New Issue
Block a user