Browse Source

Merge develop into manage

Conflicts:
	view/global.css
pull/1984/head
rabuzarus 6 years ago
parent
commit
4c263aa4ac
  1. 4
      include/auth_ejabberd.php
  2. 2
      include/contact_selectors.php
  3. 12
      include/items.php
  4. 7
      include/socgraph.php
  5. 11
      mod/contacts.php
  6. 26
      mod/crepair.php
  7. 71
      mod/network.php
  8. 49
      mod/poke.php
  9. 45
      mod/profiles.php
  10. 8
      mod/uimport.php
  11. 18
      view/global.css
  12. 10
      view/templates/crepair.tpl
  13. 56
      view/templates/poke_content.tpl
  14. 18
      view/templates/poke_head.tpl
  15. 124
      view/templates/profile_edit.tpl
  16. 2
      view/theme/duepuntozero/style.css
  17. 18
      view/theme/frost-mobile/style.css
  18. 16
      view/theme/frost/style.css
  19. 9
      view/theme/smoothly/style.css
  20. 1
      view/theme/vier/style.css
  21. 133
      view/theme/vier/templates/profile_edit.tpl

4
include/auth_ejabberd.php

@ -140,6 +140,7 @@ class exAuth
$sQuery = "SELECT `uid`, `password` FROM `user` WHERE `nickname`='". $db->escape($sUser) ."'";
$this->writeDebugLog("[debug] using query ". $sQuery);
if ($oResult = q($sQuery)){
$uid = $oResult[0]["uid"];
$Error = ($oResult[0]["password"] != hash('whirlpool',$aCommand[3]));
/*
if ($oResult[0]["password"] == hash('whirlpool',$aCommand[3])) {
@ -156,9 +157,10 @@ class exAuth
} else {
$this->writeLog("[MySQL] invalid query: ". $sQuery);
$Error = true;
$uid = -1;
}
if ($Error) {
$oConfig = q("SELECT `v` FROM `pconfig` WHERE `uid`=1 AND `cat` = 'xmpp' AND `k`='password' LIMIT 1;");
$oConfig = q("SELECT `v` FROM `pconfig` WHERE `uid`=%d AND `cat` = 'xmpp' AND `k`='password' LIMIT 1;", intval($uid));
$this->writeLog("[exAuth] got password ".$oConfig[0]["v"]);
$Error = ($aCommand[3] != $oConfig[0]["v"]);
}

2
include/contact_selectors.php

@ -88,7 +88,7 @@ function network_to_name($s, $profile = "") {
NETWORK_PUMPIO => t('pump.io'),
NETWORK_TWITTER => t('Twitter'),
NETWORK_DIASPORA2 => t('Diaspora Connector'),
NETWORK_STATUSNET => t('Statusnet'),
NETWORK_STATUSNET => t('GNU Social'),
NETWORK_APPNET => t('App.net')
);

12
include/items.php

@ -4392,7 +4392,7 @@ function subscribe_to_hub($url,$importer,$contact,$hubmode = 'subscribe') {
}
function atom_author($tag,$name,$uri,$h,$w,$photo) {
function atom_author($tag,$name,$uri,$h,$w,$photo,$geo) {
$o = '';
if(! $tag)
return $o;
@ -4410,6 +4410,10 @@ function atom_author($tag,$name,$uri,$h,$w,$photo) {
$o .= "\t".'<link rel="avatar" type="image/jpeg" media:width="' . $w . '" media:height="' . $h . '" href="' . $photo . '" />' . "\r\n";
if ($tag == "author") {
if($geo)
$o .= '<georss:point>'.xmlify($geo).'</georss:point>'."\r\n";
$r = q("SELECT `profile`.`locality`, `profile`.`region`, `profile`.`country-name`,
`profile`.`name`, `profile`.`pub_keywords`, `profile`.`about`,
`profile`.`homepage`,`contact`.`nick` FROM `profile`
@ -4473,11 +4477,11 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
$o = "\r\n\r\n<entry>\r\n";
if(is_array($author))
$o .= atom_author('author',$author['name'],$author['url'],80,80,$author['thumb']);
$o .= atom_author('author',$author['name'],$author['url'],80,80,$author['thumb'], $item['coord']);
else
$o .= atom_author('author',(($item['author-name']) ? $item['author-name'] : $item['name']),(($item['author-link']) ? $item['author-link'] : $item['url']),80,80,(($item['author-avatar']) ? $item['author-avatar'] : $item['thumb']));
$o .= atom_author('author',(($item['author-name']) ? $item['author-name'] : $item['name']),(($item['author-link']) ? $item['author-link'] : $item['url']),80,80,(($item['author-avatar']) ? $item['author-avatar'] : $item['thumb']), $item['coord']);
if(strlen($item['owner-name']))
$o .= atom_author('dfrn:owner',$item['owner-name'],$item['owner-link'],80,80,$item['owner-avatar']);
$o .= atom_author('dfrn:owner',$item['owner-name'],$item['owner-link'],80,80,$item['owner-avatar'], $item['coord']);
if(($item['parent'] != $item['id']) || ($item['parent-uri'] !== $item['uri']) || (($item['thr-parent'] !== '') && ($item['thr-parent'] !== $item['uri']))) {
$parent = q("SELECT `guid` FROM `item` WHERE `id` = %d", intval($item["parent"]));

7
include/socgraph.php

@ -748,8 +748,11 @@ function poco_check_server($server_url, $network = "", $force = false) {
}
if (!$serverret["success"] OR ($serverret["body"] == "") OR (sizeof($xmlobj) == 0) OR !is_object($xmlobj)) {
$last_failure = datetime_convert();
$failure = true;
// Workaround for bad configured servers (known nginx problem)
if ($serverret["debug"]["http_code"] != "403") {
$last_failure = datetime_convert();
$failure = true;
}
} elseif ($network == NETWORK_DIASPORA)
$last_contact = datetime_convert();

11
mod/contacts.php

@ -550,6 +550,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
'sel' => '',
'title' => t('Toggle Blocked status'),
'id' => 'toggle-block-tab',
'accesskey' => 'b',
),
array(
@ -557,6 +558,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
'sel' => '',
'title' => t('Toggle Ignored status'),
'id' => 'toggle-ignore-tab',
'accesskey' => 'i',
),
@ -565,6 +567,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive',
'sel' => '',
'title' => t('Toggle Archive status'),
'id' => 'toggle-archive-tab',
'accesskey' => 'v',
),
array(
@ -572,6 +575,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/crepair/' . $contact_id,
'sel' => '',
'title' => t('Advanced Contact Settings'),
'id' => 'repair-tab',
'accesskey' => 'r',
)
);
@ -693,6 +697,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/suggest',
'sel' => '',
'title' => t('Suggest potential friends'),
'id' => 'suggestions-tab',
'accesskey' => 'g',
),
array(
@ -700,6 +705,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/all',
'sel' => ($all) ? 'active' : '',
'title' => t('Show all contacts'),
'id' => 'showall-tab',
'accesskey' => 'l',
),
array(
@ -707,6 +713,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts',
'sel' => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored) && (! $archived)) ? 'active' : '',
'title' => t('Only show unblocked contacts'),
'id' => 'showunblocked-tab',
'accesskey' => 'o',
),
@ -715,6 +722,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/blocked',
'sel' => ($blocked) ? 'active' : '',
'title' => t('Only show blocked contacts'),
'id' => 'showblocked-tab',
'accesskey' => 'b',
),
@ -723,6 +731,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/ignored',
'sel' => ($ignored) ? 'active' : '',
'title' => t('Only show ignored contacts'),
'id' => 'showignored-tab',
'accesskey' => 'i',
),
@ -731,6 +740,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/archived',
'sel' => ($archived) ? 'active' : '',
'title' => t('Only show archived contacts'),
'id' => 'showarchived-tab',
'accesskey' => 'y',
),
@ -739,6 +749,7 @@ function contacts_content(&$a) {
'url' => $a->get_baseurl(true) . '/contacts/hidden',
'sel' => ($hidden) ? 'active' : '',
'title' => t('Only show hidden contacts'),
'id' => 'showhidden-tab',
'accesskey' => 'h',
),

26
mod/crepair.php

@ -137,16 +137,10 @@ function crepair_content(&$a) {
$contact = $r[0];
$msg1 = t('Repair Contact Settings');
$warning = t('<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.');
$info = t('Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.');
$msg2 = t('<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working.');
$msg3 = t('Please use your browser \'Back\' button <strong>now</strong> if you are uncertain what to do on this page.');
$o .= '<h2>' . $msg1 . '</h2>';
$o .= '<div class="error-message">' . $msg2 . EOL . EOL. $msg3 . '</div>';
$o .= EOL . '<a href="contacts/' . $cid . '">' . t('Return to contact editor') . '</a>' . EOL;
$returnaddr = "contacts/$cid";
$allow_remote_self = get_config('system','allow_users_remote_self');
@ -165,6 +159,11 @@ function crepair_content(&$a) {
$tpl = get_markup_template('crepair.tpl');
$o .= replace_macros($tpl, array(
'$title' => t('Repair Contact Settings'),
'$warning' => $warning,
'$info' => $info,
'$returnaddr' => $returnaddr,
'$return' => t('Return to contact editor'),
'$update_profile' => update_profile,
'$udprofilenow' => t('Refetch contact data'),
'$label_name' => t('Name'),
@ -178,7 +177,12 @@ function crepair_content(&$a) {
'$label_photo' => t('New photo from this URL'),
'$label_remote_self' => t('Remote Self'),
'$allow_remote_self' => $allow_remote_self,
'$remote_self' => array('remote_self', t('Mirror postings from this contact'), $contact['remote_self'], t('Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.'), $remote_self_options),
'$remote_self' => array('remote_self',
t('Mirror postings from this contact'),
$contact['remote_self'],
t('Mark this contact as remote_self, this will cause friendica to repost new entries from this contact.'),
$remote_self_options
),
'$contact_name' => htmlentities($contact['name']),
'$contact_nick' => htmlentities($contact['nick']),
'$contact_id' => $contact['id'],
@ -189,7 +193,7 @@ function crepair_content(&$a) {
'$poll' => $contact['poll'],
'$contact_attag' => $contact['attag'],
'$lbl_submit' => t('Submit')
));
));
return $o;

71
mod/network.php

@ -119,19 +119,19 @@ function network_init(&$a) {
$search = ((x($_GET,'search')) ? escape_tags($_GET['search']) : '');
if(x($_GET,'save')) {
$r = q("select * from `search` where `uid` = %d and `term` = '%s' limit 1",
$r = q("SELECT * FROM `search` WHERE `uid` = %d AND `term` = '%s' LIMIT 1",
intval(local_user()),
dbesc($search)
);
if(! count($r)) {
q("insert into `search` ( `uid`,`term` ) values ( %d, '%s') ",
q("INSERT INTO `search` ( `uid`,`term` ) VALUES ( %d, '%s') ",
intval(local_user()),
dbesc($search)
);
}
}
if(x($_GET,'remove')) {
q("delete from `search` where `uid` = %d and `term` = '%s'",
q("DELETE FROM `search` WHERE `uid` = %d AND `term` = '%s'",
intval(local_user()),
dbesc($search)
);
@ -172,7 +172,7 @@ function saved_searches($search) {
$o = '';
$r = q("select `id`,`term` from `search` WHERE `uid` = %d",
$r = q("SELECT `id`,`term` FROM `search` WHERE `uid` = %d",
intval(local_user())
);
@ -355,57 +355,63 @@ function network_content(&$a, $update = 0) {
// tabs
$tabs = array(
array(
'label' => t('Commented Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$all_active,
'title'=> t('Sort by Comment Date'),
'label' => t('Commented Order'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=comment' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel' => $all_active,
'title' => t('Sort by Comment Date'),
'id' => 'commented-order-tab',
'accesskey' => "e",
),
array(
'label' => t('Posted Order'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel'=>$postord_active,
'title' => t('Sort by Post Date'),
'label' => t('Posted Order'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''),
'sel' => $postord_active,
'title' => t('Sort by Post Date'),
'id' => 'posted-order-tab',
'accesskey' => "t",
),
);
if(feature_enabled(local_user(),'personal_tab')) {
$tabs[] = array(
'label' => t('Personal'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
'label' => t('Personal'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&conv=1',
'sel' => $conv_active,
'title' => t('Posts that mention or involve you'),
'id' => 'personal-tab',
'accesskey' => "r",
);
}
if(feature_enabled(local_user(),'new_tab')) {
$tabs[] = array(
'label' => t('New'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ($len_naked_cmd ? '/' : '') . 'new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
'label' => t('New'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ($len_naked_cmd ? '/' : '') . 'new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
'sel' => $new_active,
'title' => t('Activity Stream - by date'),
'id' => 'activitiy-by-date-tab',
'accesskey' => "w",
);
}
if(feature_enabled(local_user(),'link_tab')) {
$tabs[] = array(
'label' => t('Shared Links'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&bmark=1',
'sel'=>$bookmarked_active,
'title'=> t('Interesting Links'),
'label' => t('Shared Links'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&bmark=1',
'sel' => $bookmarked_active,
'title' => t('Interesting Links'),
'id' => 'shared-links-tab',
'accesskey' => "b",
);
}
if(feature_enabled(local_user(),'star_posts')) {
$tabs[] = array(
'label' => t('Starred'),
'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&star=1',
'sel'=>$starred_active,
'title' => t('Favourite Posts'),
'label' => t('Starred'),
'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '/?f=') . '&star=1',
'sel' => $starred_active,
'title' => t('Favourite Posts'),
'id' => 'starred-posts-tab',
'accesskey' => "m",
);
}
@ -446,7 +452,7 @@ function network_content(&$a, $update = 0) {
$def_acl = array('allow_cid' => '<' . intval($cid) . '>');
if($nets) {
$r = q("select id from contact where uid = %d and network = '%s' and self = 0",
$r = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND network = '%s' AND `self` = 0",
intval(local_user()),
dbesc($nets)
);
@ -475,7 +481,10 @@ function network_content(&$a, $update = 0) {
$content = "";
if ($cid) {
$contact = q("SELECT `nick` FROM `contact` WHERE `id` = %d AND `uid` = %d AND `forum`", intval($cid), intval(local_user()));
$contact = q("SELECT `nick` FROM `contact` WHERE `id` = %d AND `uid` = %d AND `forum`",
intval($cid),
intval(local_user())
);
if ($contact)
$content = "@".$contact[0]["nick"]."+".$cid;
}
@ -569,7 +578,7 @@ function network_content(&$a, $update = 0) {
);
if(count($r)) {
$sql_post_table = " INNER JOIN (SELECT DISTINCT(`parent`) FROM `item`
WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." and deleted = 0
WHERE 1 $sql_options AND `contact-id` = ".intval($cid)." AND `deleted` = 0
ORDER BY `item`.`received` DESC) AS `temp1`
ON $sql_table.$sql_parent = `temp1`.`parent` ";
$sql_extra = "";

49
mod/poke.php

@ -1,4 +1,18 @@
<?php
<?php /** @file */
/**
*
* Poke, prod, finger, or otherwise do unspeakable things to somebody - who must be a connection in your address book
* This function can be invoked with the required arguments (verb and cid and private and possibly parent) silently via ajax or
* other web request. You must be logged in and connected to a profile.
* If the required arguments aren't present, we'll display a simple form to choose a recipient and a verb.
* parent is a special argument which let's you attach this activity as a comment to an existing conversation, which
* may have started with somebody else poking (etc.) somebody, but this isn't necessary. This can be used in the more pokes
* plugin version to have entire conversations where Alice poked Bob, Bob fingered Alice, Alice hugged Bob, etc.
*
* private creates a private conversation with the recipient. Otherwise your profile's default post privacy is used.
*
*/
require_once('include/security.php');
require_once('include/bbcode.php');
@ -33,7 +47,7 @@ function poke_init(&$a) {
logger('poke: verb ' . $verb . ' contact ' . $contact_id, LOGGER_DEBUG);
$r = q("SELECT * FROM `contact` WHERE `id` = %d and `uid` = %d LIMIT 1",
$r = q("SELECT * FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($contact_id),
intval($uid)
);
@ -46,8 +60,8 @@ function poke_init(&$a) {
$target = $r[0];
if($parent) {
$r = q("select uri, private, allow_cid, allow_gid, deny_cid, deny_gid
from item where id = %d and parent = %d and uid = %d limit 1",
$r = q("SELECT `uri`, `private`, `allow_cid`, `allow_gid`, `deny_cid`, `deny_gid`
FROM `item` WHERE `id` = %d AND `parent` = %d AND `uid` = %d LIMIT 1",
intval($parent),
intval($parent),
intval($uid)
@ -140,7 +154,7 @@ function poke_content(&$a) {
$id = '';
if(intval($_GET['c'])) {
$r = q("select id,name from contact where id = %d and uid = %d limit 1",
$r = q("SELECT `id`,`name` FROM `contact` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($_GET['c']),
intval(local_user())
);
@ -153,31 +167,16 @@ function poke_content(&$a) {
$base = $a->get_baseurl();
$a->page['htmlhead'] .= '<script src="' . $a->get_baseurl(true) . '/library/jquery_ac/friendica.complete.js" ></script>';
$a->page['htmlhead'] .= <<< EOT
<script>$(document).ready(function() {
var a;
a = $("#poke-recip").autocomplete({
serviceUrl: '$base/acl',
minChars: 2,
width: 350,
onSelect: function(value,data) {
$("#poke-recip-complete").val(data);
}
});
a.setOptions({ params: { type: 'a' }});
});
$head_tpl = get_markup_template('poke_head.tpl');
$a->page['htmlhead'] .= replace_macros($head_tpl,array(
'$baseurl' => $a->get_baseurl(true),
'$base' => $base
));
</script>
EOT;
$parent = ((x($_GET,'parent')) ? intval($_GET['parent']) : '0');
$verbs = get_poke_verbs();
$shortlist = array();

45
mod/profiles.php

@ -206,7 +206,7 @@ function profiles_post(&$a) {
if($ignore_year)
$dob = '0000-' . $dob;
}
$name = notags(trim($_POST['name']));
if(! strlen($name)) {
@ -327,7 +327,7 @@ function profiles_post(&$a) {
$hide_friends = (($_POST['hide-friends'] == 1) ? 1: 0);
set_pconfig(local_user(),'system','detailled_profile', (($_POST['detailled_profile'] == 1) ? 1: 0));
$changes = array();
$value = '';
@ -540,7 +540,7 @@ function profile_activity($changed, $value) {
return;
$arr = array();
$arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), local_user());
$arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), local_user());
$arr['uid'] = local_user();
$arr['contact-id'] = $self[0]['id'];
$arr['wall'] = 1;
@ -552,7 +552,7 @@ function profile_activity($changed, $value) {
$arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
$arr['verb'] = ACTIVITY_UPDATE;
$arr['object-type'] = ACTIVITY_OBJ_PROFILE;
$A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
@ -570,7 +570,7 @@ function profile_activity($changed, $value) {
$changes .= $ch;
}
$prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]';
$prof = '[url=' . $self[0]['url'] . '?tab=profile' . ']' . t('public profile') . '[/url]';
if($t == 1 && strlen($value)) {
$message = sprintf( t('%1$s changed %2$s to &ldquo;%3$s&rdquo;'), $A, $changes, $value);
@ -578,9 +578,9 @@ function profile_activity($changed, $value) {
}
else
$message = sprintf( t('%1$s has an updated %2$s, changing %3$s.'), $A, $prof, $changes);
$arr['body'] = $message;
$arr['body'] = $message;
$arr['object'] = '<object><type>' . ACTIVITY_OBJ_PROFILE . '</type><title>' . $self[0]['name'] . '</title>'
. '<id>' . $self[0]['url'] . '/' . $self[0]['name'] . '</id>';
@ -664,8 +664,10 @@ function profiles_content(&$a) {
'$no_selected' => (($r[0]['hide-friends'] == 0) ? " checked=\"checked\" " : "")
));
$personal_account = !(in_array($a->user["page-flags"],
array(PAGE_COMMUNITY, PAGE_PRVGROUP)));
$detailled_profile = (get_pconfig(local_user(),'system','detailled_profile') AND $personal_account);
$f = get_config('system','birthday_input_format');
if(! $f)
@ -674,6 +676,17 @@ function profiles_content(&$a) {
$is_default = (($r[0]['is-default']) ? 1 : 0);
$tpl = get_markup_template("profile_edit.tpl");
$o .= replace_macros($tpl,array(
'$personal_account' => $personal_account,
'$detailled_profile' => $detailled_profile,
'$details' => array(
'detailled_profile', //Name
t('Show more profile fields:'), //Label
$detailled_profile, //Value
'', //Help string
array(t('No'),t('Yes')) //Off - On strings
),
'$multi_profiles' => feature_enabled(local_user(),'multi_profiles'),
'$form_security_token' => get_form_security_token("profile_edit"),
'$form_security_token_photo' => get_form_security_token("profile_photo"),
@ -775,10 +788,10 @@ function profiles_content(&$a) {
return $o;
}
//Profiles list.
else {
//If we don't support multi profiles, don't display this list.
if(!feature_enabled(local_user(),'multi_profiles')){
$r = q(
@ -790,11 +803,11 @@ function profiles_content(&$a) {
goaway($a->get_baseurl(true) . '/profiles/'.$r[0]['id']);
}
}
$r = q("SELECT * FROM `profile` WHERE `uid` = %d",
local_user());
if(count($r)) {
$tpl_header = get_markup_template('profile_listing_header.tpl');
$o .= replace_macros($tpl_header,array(
'$header' => t('Edit/Manage Profiles'),
@ -802,17 +815,17 @@ function profiles_content(&$a) {
'$cr_new' => t('Create New Profile'),
'$cr_new_link' => 'profiles/new?t=' . get_form_security_token("profile_new")
));
$tpl = get_markup_template('profile_entry.tpl');
foreach($r as $rr) {
$o .= replace_macros($tpl, array(
'$photo' => $a->get_cached_avatar_image($rr['thumb']),
'$id' => $rr['id'],
'$alt' => t('Profile Image'),
'$profile_name' => $rr['profile-name'],
'$visible' => (($rr['is-default']) ? '<strong>' . t('visible to everybody') . '</strong>'
'$visible' => (($rr['is-default']) ? '<strong>' . t('visible to everybody') . '</strong>'
: '<a href="' . $a->get_baseurl(true) . '/profperm/' . $rr['id'] . '" />' . t('Edit visibility') . '</a>')
));
}

8
mod/uimport.php

@ -57,8 +57,8 @@ function uimport_content(&$a) {
unset($_SESSION['theme']);
if(x($_SESSION,'mobile-theme'))
unset($_SESSION['mobile-theme']);
$tpl = get_markup_template("uimport.tpl");
return replace_macros($tpl, array(
'$regbutt' => t('Import'),
@ -66,8 +66,8 @@ function uimport_content(&$a) {
'title' => t("Move account"),
'intro' => t("You can import an account from another Friendica server."),
'instruct' => t("You need to export your account from the old server and upload it here. We will recreate your old account here with all your contacts. We will try also to inform your friends that you moved here."),
'warn' => t("This feature is experimental. We can't import contacts from the OStatus network (statusnet/identi.ca) or from Diaspora"),
'warn' => t("This feature is experimental. We can't import contacts from the OStatus network (GNU Social/Statusnet) or from Diaspora"),
'field' => array('accountfile', t('Account file'),'<input id="id_accountfile" name="accountfile" type="file">', t('To export your account, go to "Settings->Export your personal data" and select "Export account"')),
),
),
));
}

18
view/global.css

@ -256,4 +256,20 @@ a {
.selected-identity img {
border: 2px solid #ff0000;
}
}
/* poke */
#poke-desc {
margin: 5px 0 10px;
}
#poke-wrapper {
padding: 10px 0 0px;
}
#poke-recipient, #poke-action, #poke-privacy-settings {
margin: 10px 0 30px;
}
#poke-recip-label, #poke-action-label, #prvmail-message-label {
margin: 10px 0 10px;
}

10
view/templates/crepair.tpl

@ -1,3 +1,13 @@
{{include file="section_title.tpl"}}
<div class="crepair-error-message">{{$warning}}</div><br>
<div class="crepair-return">
{{$info}}<br>
<a href="{{$returnaddr}}">{{$return}}</a>
</div>
<br />
<form id="crepair-form" action="crepair/{{$contact_id}}" method="post" >
<h4>{{$contact_name}}</h4>

56
view/templates/poke_content.tpl

@ -3,31 +3,33 @@
<div id="poke-desc">{{$desc}}</div>
<form action="poke" method="get">
<br />
<br />
<div id="poke-recip-label">{{$clabel}}</div>
<br />
<input id="poke-recip" type="text" size="64" maxlength="255" value="{{$name|escape:'html'}}" name="pokename" autocomplete="off" />
<input id="poke-recip-complete" type="hidden" value="{{$id}}" name="cid" />
<input id="poke-parent" type="hidden" value="{{$parent}}" name="parent" />
<br />
<br />
<div id="poke-action-label">{{$choice}}</div>
<br />
<br />
<select name="verb" id="poke-verb-select" >
{{foreach $verbs as $v}}
<option value="{{$v.0}}">{{$v.1}}</option>
{{/foreach}}
</select>
<br />
<br />
<div id="poke-private-desc">{{$prv_desc}}</div>
<input type="checkbox" name="private" {{if $parent}}disabled="disabled"{{/if}} value="1" />
<br />
<br />
<input type="submit" name="submit" value="{{$submit|escape:'html'}}" />
</form>
<div id="poke-wrapper">
<form action="poke" method="get">
<div id="poke-recipient">
<div id="poke-recip-label">{{$clabel}}</div>
<input id="poke-recip" type="text" size="64" maxlength="255" value="{{$name|escape:'html'}}" name="pokename" autocomplete="off" />
<input id="poke-recip-complete" type="hidden" value="{{$id}}" name="cid" />
<input id="poke-parent" type="hidden" value="{{$parent}}" name="parent" />
</div>
<div id="poke-action">
<div id="poke-action-label">{{$choice}}</div>
<select name="verb" id="poke-verb-select" >
{{foreach $verbs as $v}}
<option value="{{$v.0}}">{{$v.1}}</option>
{{/foreach}}
</select>
</div>
<div id="poke-privacy-settings">
<div id="poke-private-desc">{{$prv_desc}}</div>
<input type="checkbox" name="private" {{if $parent}}disabled="disabled"{{/if}} value="1" />
</div>
<input type="submit" name="submit" value="{{$submit|escape:'html'}}" />
</form>
</div>

18
view/templates/poke_head.tpl

@ -0,0 +1,18 @@
<script src="{{$baseurl}}/library/jquery_ac/friendica.complete.js" ></script>
<script>$(document).ready(function() {
var a;
a = $("#poke-recip").autocomplete({
serviceUrl: '{{$base}}/acl',
minChars: 2,
width: 350,
onSelect: function(value,data) {
$("#poke-recip-complete").val(data);
}
});
a.setOptions({ params: { type: 'a' }});
});
</script>

124
view/templates/profile_edit.tpl

@ -21,6 +21,8 @@
<form id="profile-edit-form" name="form1" action="profiles/{{$profile_id}}" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{if $detailled_profile}}
{{include file="field_yesno.tpl" field=$details}}
<div id="profile-edit-profile-name-wrapper" >
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >{{$lbl_profname}} </label>
<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="{{$profile_name|escape:'html'}}" /><div class="required">*</div>
@ -318,7 +320,129 @@
</div>
<div class="profile-edit-submit-end"></div>
{{else}}
{{if $personal_account}}
{{include file="field_yesno.tpl" field=$details}}
{{/if}}
<div id="profile-edit-profile-name-wrapper" >
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >{{$lbl_profname}} </label>
<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="{{$profile_name|escape:'html'}}" /><div class="required">*</div>
</div>
<div id="profile-edit-profile-name-end"></div>
<div id="profile-edit-name-wrapper" >
<label id="profile-edit-name-label" for="profile-edit-name" >{{$lbl_fullname}} </label>
<input type="text" size="32" name="name" id="profile-edit-name" value="{{$name|escape:'html'}}" />
</div>
<div id="profile-edit-name-end"></div>
{{if $personal_account}}
<div id="profile-edit-gender-wrapper" >
<label id="profile-edit-gender-label" for="gender-select" >{{$lbl_gender}} </label>
{{$gender}}
</div>
<div id="profile-edit-gender-end"></div>
<div id="profile-edit-dob-wrapper" >
<label id="profile-edit-dob-label" for="dob-select" >{{$lbl_bd}} </label>
<div id="profile-edit-dob" >
{{$dob}} {{$age}}
</div>
</div>
<div id="profile-edit-dob-end"></div>
{{/if}}
<div id="profile-edit-homepage-wrapper" >
<label id="profile-edit-homepage-label" for="profile-edit-homepage" >{{$lbl_homepage}} </label>
<input type="url" size="32" name="homepage" id="profile-edit-homepage" value="{{$homepage|escape:'html'}}" />
</div>
<div id="profile-edit-homepage-end"></div>
{{$hide_friends}}
<div id="profile-edit-address-wrapper" >
<label id="profile-edit-address-label" for="profile-edit-address" >{{$lbl_address}} </label>
<input type="text" size="32" name="address" id="profile-edit-address" value="{{$address|escape:'html'}}" />
</div>
<div id="profile-edit-address-end"></div>
<div id="profile-edit-locality-wrapper" >
<label id="profile-edit-locality-label" for="profile-edit-locality" >{{$lbl_city}} </label>
<input type="text" size="32" name="locality" id="profile-edit-locality" value="{{$locality|escape:'html'}}" />
</div>
<div id="profile-edit-locality-end"></div>
<div id="profile-edit-postal-code-wrapper" >
<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >{{$lbl_zip}} </label>
<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="{{$postal_code|escape:'html'}}" />
</div>
<div id="profile-edit-postal-code-end"></div>
<div id="profile-edit-country-name-wrapper" >
<label id="profile-edit-country-name-label" for="profile-edit-country-name" >{{$lbl_country}} </label>
<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('{{$region}}');">
<option selected="selected" >{{$country_name}}</option>
<option>temp</option>
</select>
</div>
<div id="profile-edit-country-name-end"></div>
<div id="profile-edit-region-wrapper" >
<label id="profile-edit-region-label" for="profile-edit-region" >{{$lbl_region}} </label>
<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
<option selected="selected" >{{$region}}</option>
<option>temp</option>
</select>
</div>
<div id="profile-edit-region-end"></div>
<div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >{{$lbl_pubkey}} </label>
<input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="{{$lbl_ex2}}" value="{{$pub_keywords|escape:'html'}}" />
</div><div id="profile-edit-pubkeywords-desc">{{$lbl_pubdsc}}</div>
<div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >{{$lbl_prvkey}} </label>
<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="{{$lbl_ex2}}" value="{{$prv_keywords|escape:'html'}}" />
</div><div id="profile-edit-prvkeywords-desc">{{$lbl_prvdsc}}</div>
<div id="profile-edit-prvkeywords-end"></div>
<div id="about-jot-wrapper" >
<p id="about-jot-desc" >
{{$lbl_about}}
</p>
<textarea rows="10" cols="72" id="profile-about-text" name="about" >{{$about}}</textarea>
</div>
<div id="about-jot-end"></div>
<div class="profile-edit-submit-wrapper" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
</div>
<div class="profile-edit-submit-end"></div>
<input type="hidden" name="pdesc" id="profile-edit-pdesc" value="{{$pdesc}}" />
<input type="hidden" id="contact-jot-text" name="contact" value="{{$contact}}" />
<input type="hidden" name="hometown" id="profile-edit-hometown" value="{{$hometown}}" />
<input type="hidden" name="politic" id="profile-edit-politic" value="{{$politic}}" />
<input type="hidden" name="religion" id="profile-edit-religion" value="{{$religion}}" />
<input type="hidden" id="likes-jot-text" name="likes" value="{{$likes}}" />
<input type="hidden" id="dislikes-jot-text" name="dislikes" value="{{$dislikes}}" />
<input type="hidden" name="with" id="profile-edit-with" value="{{$with}}" />
<input type="hidden" name="howlong" id="profile-edit-howlong" value="{{$howlong}}" />
<input type="hidden" id="romance-jot-text" name="romance" value="{{$romance}}" />
<input type="hidden" id="work-jot-text" name="work" value="{{$work}}" />
<input type="hidden" id="education-jot-text" name="education" value="{{$education}}" />
<input type="hidden" id="interest-jot-text" name="interest" value="{{$interest}}" />
<input type="hidden" id="music-jot-text" name="music" value="{{$music}}" />
<input type="hidden" id="book-jot-text" name="book" value="{{$book}}" />
<input type="hidden" id="tv-jot-text" name="tv" value="{{$tv}}" />
<input type="hidden" id="film-jot-text" name="film" value="{{$film}}" />
{{/if}}
</form>
</div>
<script type="text/javascript">Fill_Country('{{$country_name}}');Fill_States('{{$region}}');</script>

2
view/theme/duepuntozero/style.css

@ -959,7 +959,7 @@ input#dfrn-url {
}
.wall-item-content-wrapper.comment {
# margin-left: 50px;
/*margin-left: 50px;*/
background: #EEEEEE;
}

18
view/theme/frost-mobile/style.css

@ -2500,6 +2500,22 @@ a.mail-list-link {
clear: both;
}
#poke-desc {
margin: 5px 0 10px;
}
#poke-wrapper {
padding: 10px 0 0px;
}
#poke-recipient, #poke-action, #poke-privacy-settings {
margin: 10px 0 30px;
}
#poke-recip-label, #poke-action-label, #prvmail-message-label {
margin: 10px 0 10px;
}
#sidebar-group-list ul {
list-style-type: none;
}
@ -4249,7 +4265,7 @@ ul.notifications-menu-popup {
#recip {
}
.autocomplete-w1 { background: #ffffff; no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
.autocomplete-w1 { background: #ffffff no-repeat bottom right; position:absolute; top:0px; left:0px; margin:6px 0 0 6px; /* IE6 fix: */ _background:none; _margin:1px 0 0 0; }
.autocomplete { color:#000; border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
.autocomplete .selected { background:#F0F0F0; }
.autocomplete div { padding:2px 5px; white-space:nowrap; overflow:hidden; }

16
view/theme/frost/style.css

@ -2315,6 +2315,22 @@ a.mail-list-link {
clear: both;
}
#poke-desc {
margin: 5px 0 10px;
}
#poke-wrapper {
padding: 10px 0 20px;
}
#poke-recipient, #poke-action, #poke-privacy-settings {
margin: 10px 0 30px;
}
#poke-recip-label, #poke-action-label, #prvmail-message-label {
margin: 10px 0 10px;
}
#sidebar-group-list ul {
list-style-type: none;
}

9
view/theme/smoothly/style.css

@ -291,7 +291,7 @@ section {
margin: 10px 0 0 230px;
}
.login-form,
.login-form {
margin-top: 10px;
}
@ -2693,6 +2693,13 @@ margin-left: 0px;
border: 1px solid #7C7D7B;
}
/* ========== */
/* = Poke = */
/* ========== */
#poke-recip {
float: none;
}
/* ================= */
/* = Notifications = */
/* ================= */

1
view/theme/vier/style.css

@ -2496,6 +2496,7 @@ a.mail-list-link {
border: none;
}
/* ========== */
/* = Events = */
/* ========== */

133
view/theme/vier/templates/profile_edit.tpl

@ -32,9 +32,11 @@
<input type="hidden" name="profile" value="{{$profile_name}}" />
<!-- Profile picture -->
{{if $detailled_profile}}
<div class="toggle-section js-toggle-section">
<a class="section-caption js-section-toggler" href="javascript:;">{{$lbl_picture_section}} &raquo;</a>
<div class="js-section toggle-section-content hidden">
{{/if}}
<div id="profile-photo-upload-wrapper">
<label id="profile-photo-upload-label" for="profile-photo-upload">{{$lbl_profile_photo}}:</label>
@ -46,19 +48,23 @@
</div>
<div class="profile-edit-submit-end"></div>
{{if $detailled_profile}}
</div>
</div>
{{/if}}
</form>
<form id="profile-edit-form" name="form1" action="profiles/{{$profile_id}}" method="post" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
{{if $detailled_profile}}
<!-- Basic information -->
<div class="toggle-section js-toggle-section">
<a class="section-caption js-section-toggler" href="javascript:;">{{$lbl_basic_section}} &raquo;</a>
<div class="js-section toggle-section-content hidden">
{{include file="field_yesno.tpl" field=$details}}
{{if $multi_profiles}}
<div id="profile-edit-profile-name-wrapper" >
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >{{$lbl_profname}} </label>
@ -309,6 +315,129 @@
</div>
</div>
{{else}}
{{if $personal_account}}
{{include file="field_yesno.tpl" field=$details}}
{{/if}}
<div id="profile-edit-profile-name-wrapper" >
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" >{{$lbl_profname}} </label>
<input type="text" size="32" name="profile_name" id="profile-edit-profile-name" value="{{$profile_name|escape:'html'}}" /><div class="required">*</div>
</div>
<div id="profile-edit-profile-name-end"></div>
<div id="profile-edit-name-wrapper" >
<label id="profile-edit-name-label" for="profile-edit-name" >{{$lbl_fullname}} </label>
<input type="text" size="32" name="name" id="profile-edit-name" value="{{$name|escape:'html'}}" />
</div>
<div id="profile-edit-name-end"></div>
{{if $personal_account}}
<div id="profile-edit-gender-wrapper" >
<label id="profile-edit-gender-label" for="gender-select" >{{$lbl_gender}} </label>
{{$gender}}
</div>
<div id="profile-edit-gender-end"></div>
<div id="profile-edit-dob-wrapper" >
<label id="profile-edit-dob-label" for="dob-select" >{{$lbl_bd}} </label>
<div id="profile-edit-dob" >
{{$dob}} {{$age}}
</div>
</div>
<div id="profile-edit-dob-end"></div>
{{/if}}
<div id="profile-edit-homepage-wrapper" >
<label id="profile-edit-homepage-label" for="profile-edit-homepage" >{{$lbl_homepage}} </label>
<input type="text" size="32" name="homepage" id="profile-edit-homepage" value="{{$homepage}}" />
</div>
<div id="profile-edit-homepage-end"></div>
{{$hide_friends}}
<div id="profile-edit-address-wrapper" >
<label id="profile-edit-address-label" for="profile-edit-address" >{{$lbl_address}} </label>
<input type="text" size="32" name="address" id="profile-edit-address" value="{{$address|escape:'html'}}" />
</div>
<div id="profile-edit-address-end"></div>
<div id="profile-edit-locality-wrapper" >
<label id="profile-edit-locality-label" for="profile-edit-locality" >{{$lbl_city}} </label>
<input type="text" size="32" name="locality" id="profile-edit-locality" value="{{$locality|escape:'html'}}" />
</div>
<div id="profile-edit-locality-end"></div>
<div id="profile-edit-postal-code-wrapper" >
<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >{{$lbl_zip}} </label>
<input type="text" size="32" name="postal_code" id="profile-edit-postal-code" value="{{$postal_code|escape:'html'}}" />
</div>
<div id="profile-edit-postal-code-end"></div>
<div id="profile-edit-country-name-wrapper" >
<label id="profile-edit-country-name-label" for="profile-edit-country-name" >{{$lbl_country}} </label>
<select name="country_name" id="profile-edit-country-name" onChange="Fill_States('{{$region}}');">
<option selected="selected" >{{$country_name}}</option>
<option>temp</option>
</select>
</div>
<div id="profile-edit-country-name-end"></div>
<div id="profile-edit-region-wrapper" >
<label id="profile-edit-region-label" for="profile-edit-region" >{{$lbl_region}} </label>
<select name="region" id="profile-edit-region" onChange="Update_Globals();" >
<option selected="selected" >{{$region}}</option>
<option>temp</option>
</select>
</div>
<div id="profile-edit-region-end"></div>
<div id="profile-edit-pubkeywords-wrapper" >
<label id="profile-edit-pubkeywords-label" for="profile-edit-pubkeywords" >{{$lbl_pubkey}} </label>
<input type="text" size="32" name="pub_keywords" id="profile-edit-pubkeywords" title="{{$lbl_ex2}}" value="{{$pub_keywords|escape:'html'}}" />
</div><div id="profile-edit-pubkeywords-desc">{{$lbl_pubdsc}}</div>
<div id="profile-edit-pubkeywords-end"></div>
<div id="profile-edit-prvkeywords-wrapper" >
<label id="profile-edit-prvkeywords-label" for="profile-edit-prvkeywords" >{{$lbl_prvkey}} </label>
<input type="text" size="32" name="prv_keywords" id="profile-edit-prvkeywords" title="{{$lbl_ex2}}" value="{{$prv_keywords|escape:'html'}}" />
</div><div id="profile-edit-prvkeywords-desc">{{$lbl_prvdsc}}</div>
<div id="profile-edit-prvkeywords-end"></div>
<div id="about-jot-wrapper" >
<p id="about-jot-desc" >
{{$lbl_about}}
</p>
<textarea rows="10" cols="72" id="profile-about-text" name="about" >{{$about}}</textarea>
</div>
<div id="about-jot-end"></div>
<div class="profile-edit-submit-wrapper" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" />
</div>
<div class="profile-edit-submit-end"></div>
<input type="hidden" name="pdesc" id="profile-edit-pdesc" value="{{$pdesc}}" />
<input type="hidden" id="contact-jot-text" name="contact" value="{{$contact}}" />
<input type="hidden" name="hometown" id="profile-edit-hometown" value="{{$hometown}}" />
<input type="hidden" name="politic" id="profile-edit-politic" value="{{$politic}}" />
<input type="hidden" name="religion" id="profile-edit-religion" value="{{$religion}}" />
<input type="hidden" id="likes-jot-text" name="likes" value="{{$likes}}" />
<input type="hidden" id="dislikes-jot-text" name="dislikes" value="{{$dislikes}}" />
<input type="hidden" name="with" id="profile-edit-with" value="{{$with}}" />
<input type="hidden" name="howlong" id="profile-edit-howlong" value="{{$howlong}}" />
<input type="hidden" id="romance-jot-text" name="romance" value="{{$romance}}" />
<input type="hidden" id="work-jot-text" name="work" value="{{$work}}" />
<input type="hidden" id="education-jot-text" name="education" value="{{$education}}" />
<input type="hidden" id="interest-jot-text" name="interest" value="{{$interest}}" />
<input type="hidden" id="music-jot-text" name="music" value="{{$music}}" />
<input type="hidden" id="book-jot-text" name="book" value="{{$book}}" />
<input type="hidden" id="tv-jot-text" name="tv" value="{{$tv}}" />
<input type="hidden" id="film-jot-text" name="film" value="{{$film}}" />
{{/if}}
</form>
</div>

Loading…
Cancel
Save