This commit is contained in:
jeroenpraat 2016-03-14 15:46:57 +01:00
commit b8e8517725
19 changed files with 1524 additions and 1539 deletions

View File

@ -224,6 +224,19 @@ function print_warn {
echo -e '\e[0m' echo -e '\e[0m'
} }
function stop_hubzilla {
if [ -d /etc/apache2 ]
then
print_info "stopping apache webserver..."
service apache2 stop
fi
if [ -f /etc/init.d/mysql ]
then
print_info "stopping mysql db..."
/etc/init.d/mysql stop
fi
}
function install_apache { function install_apache {
print_info "installing apache..." print_info "installing apache..."
nocheck_install "apache2 apache2-utils" nocheck_install "apache2 apache2-utils"
@ -236,7 +249,7 @@ function install_curl {
function install_sendmail { function install_sendmail {
print_info "installing sendmail..." print_info "installing sendmail..."
nocheck_install "sendmail" nocheck_install "sendmail sendmail-bin"
} }
function install_php { function install_php {
@ -561,7 +574,8 @@ function install_hubzilla {
chmod -R 777 store chmod -R 777 store
touch .htconfig.php touch .htconfig.php
chmod ou+w .htconfig.php chmod ou+w .htconfig.php
cd .. install_hubzilla_plugins
cd /var/www/
chown -R www-data:www-data html chown -R www-data:www-data html
chown root:www-data /var/www/html/ chown root:www-data /var/www/html/
chown root:www-data /var/www/html/.htaccess chown root:www-data /var/www/html/.htaccess
@ -575,6 +589,73 @@ function install_hubzilla {
print_info "installed hubzilla" print_info "installed hubzilla"
} }
function install_hubzilla_plugins {
print_info "installing hubzilla plugins..."
cd /var/www/html
plugin_install=.homeinstall/plugin_install.txt
theme_install=.homeinstall/theme_install.txt
# overwrite script to update the plugin and themes
rm -f $plugins_update
echo "cd /var/www/html" >> $plugins_update
###################
# write plugin file
if [ ! -f "$plugin_install" ]
then
echo "# To install a plugin" >> $plugin_install
echo "# 1. add the plugin in a new line and run" >> $plugin_install
echo "# 2. run" >> $plugin_install
echo "# cd /var/www/html/.homeinstall" >> $plugin_install
echo "# ./hubzilla-setup.sh" >> $plugin_install
echo "https://gitlab.com/zot/ownmapp.git ownMap" >> $plugin_install
echo "https://gitlab.com/zot/hubzilla-chess.git chess" >> $plugin_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_addon_repo $line
util/update_addon_repo $p_name # not sure if this line is neccessary
echo "util/update_addon_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a plugin from file $plugin_install - something wrong with format in line: $line"
fi
done < "$plugin_install"
###################
# write theme file
if [ ! -f "$theme_install" ]
then
echo "# To install a theme" >> $theme_install
echo "# 1. add the theme in a new line and run" >> $theme_install
echo "# 2. run" >> $theme_install
echo "# cd /var/www/html/.homeinstall" >> $theme_install
echo "# ./hubzilla-setup.sh" >> $theme_install
echo "https://github.com/DeadSuperHero/hubzilla-themes.git DeadSuperHeroThemes" >> $theme_install
fi
# install plugins
while read -r line; do
[[ "$line" =~ ^#.*$ ]] && continue
p_url=$(echo $line | awk -F' ' '{print $1}')
p_name=$(echo $line | awk -F' ' '{print $2}')
# basic check of format
if [ ${#p_url} -ge 1 ] && [ ${#p_name} -ge 1 ]
then
# install addon
util/add_theme_repo $line
util/update_theme_repo $p_name # not sure if this line is neccessary
echo "util/update_theme_repo $p_name" >> $plugins_update
else
print_info "skipping installation of a theme from file $theme_install - something wrong with format in line: $line"
fi
done < "$theme_install"
print_info "installed hubzilla plugins and themes"
}
function rewrite_to_https { function rewrite_to_https {
print_info "configuring apache to redirect http to httpS ..." print_info "configuring apache to redirect http to httpS ..."
htaccessfile=/var/www/html/.htaccess htaccessfile=/var/www/html/.htaccess
@ -762,6 +843,7 @@ echo "echo \"\$(date) - updating hubhilla core...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/ pull" >> /var/www/$hubzilladaily echo "git -C /var/www/html/ pull" >> /var/www/$hubzilladaily
echo "echo \"\$(date) - updating hubhilla addons...\"" >> /var/www/$hubzilladaily echo "echo \"\$(date) - updating hubhilla addons...\"" >> /var/www/$hubzilladaily
echo "git -C /var/www/html/addon/ pull" >> /var/www/$hubzilladaily echo "git -C /var/www/html/addon/ pull" >> /var/www/$hubzilladaily
echo "bash /var/www/html/$plugins_update" >> /var/www/$hubzilladaily
echo "chown -R www-data:www-data /var/www/html/ # make all accessable for the webserver" >> /var/www/$hubzilladaily echo "chown -R www-data:www-data /var/www/html/ # make all accessable for the webserver" >> /var/www/$hubzilladaily
echo "chown root:www-data /var/www/html/.htaccess" >> /var/www/$hubzilladaily echo "chown root:www-data /var/www/html/.htaccess" >> /var/www/$hubzilladaily
echo "chmod 0644 /var/www/html/.htaccess # www-data can read but not write it" >> /var/www/$hubzilladaily echo "chmod 0644 /var/www/html/.htaccess # www-data can read but not write it" >> /var/www/$hubzilladaily
@ -827,6 +909,7 @@ source $configfile
selfhostdir=/etc/selfhost selfhostdir=/etc/selfhost
selfhostscript=selfhost-updater.sh selfhostscript=selfhost-updater.sh
hubzilladaily=hubzilla-daily.sh hubzilladaily=hubzilla-daily.sh
plugins_update=.homeinstall/plugins_update.sh
snapshotconfig=/etc/rsnapshot_hubzilla.conf snapshotconfig=/etc/rsnapshot_hubzilla.conf
snapshotconfig_external_device=/etc/rsnapshot_hubzilla_external_device.conf snapshotconfig_external_device=/etc/rsnapshot_hubzilla_external_device.conf
backup_mount_point=/media/hubzilla_backup backup_mount_point=/media/hubzilla_backup
@ -836,6 +919,7 @@ sslconf=/etc/apache2/sites-available/default-ssl.conf
#set -x # activate debugging from here #set -x # activate debugging from here
check_config check_config
stop_hubzilla
update_upgrade update_upgrade
install_curl install_curl
install_sendmail install_sendmail

View File

@ -7,8 +7,8 @@
[h3]Externe Ressourcen[/h3] [h3]Externe Ressourcen[/h3]
[zrl=[baseurl]/help/external-resource-links]Links zu externen Ressourcen[/zrl] [zrl=[baseurl]/help/external-resource-links]Links zu externen Ressourcen[/zrl]
[url=https://github.com/redmatrix/redmatrix]Haupt-Website[/url] [url=https://github.com/redmatrix/hubzilla]Haupt-Website[/url]
[url=https://github.com/redmatrix/redmatrix-addons]Addons-Website[/url] [url=https://github.com/redmatrix/hubzilla-addons]Addons-Website[/url]
[url=[baseurl]/help/credits]$Projectname Credits[/url] [url=[baseurl]/help/credits]$Projectname Credits[/url]

68
doc/federate.bb Normal file
View File

@ -0,0 +1,68 @@
[h2]Creating protocol federation services[/h2]
There are three main components to writing federation plugins. These are:
[1] Channel discovery and making connections
[2] Sending posts/messages
[3] Receiving posts/messages
In addition, federation drivers must handle
[4] differences in privacy policies
[h3]Making connections[/h3]
The core application provides channel discovery in the following sequence:
[1] Zot channel discovery
[2] Webfinger (channel@hub) lookup
[2.1] RFC7033 webfinger
[2.2] XRD based webfinger (old style)
[3] URL discovery (currently only used to discover RSS feeds)
[4] If all of these fail, the network is "unknown" and we are unable to communicate with or connect with the channel. An 'xchan' record [i]may[/i] still be created [b]if[/b] there is enough information known to identify a unique channel.
Any of the lookup services may be bound to a plugin and extended. When a channel is discovered, we create an 'xchan' record which is a platform neutral representation of the channel identity. If we need to send information to the channel, a 'hubloc' (hub location) record is also generally required. A 'follow' plugin hook is provided to bypass webfinger and this discovery sequence completely.
The final step in gluing this together is to create an 'abook' record, which attaches an xchan in a relationship to a local channel with a given set of permissions.
For networks which do not support nomadic identity, your plugin must also set "abook_instance" which is a comma-separated list of local URLs that the remote channel is connected with. For instance if your member was connected to my channel clone at https://example.com, the abook_instance for that connection would read 'https://example.com'. If you also connected to my clone at https://abc.example.com, the string would be changed to 'https://example.com,https://abc.example.com'. This allows local channels to differentiate which instance a given remote channel is connected with and avoid delivery failures to those channels from other clone instances.
A federation plugin for a webfinger based system needs only to examine the webfinger or XRD results and identify a protocol stack which can be used to connect or communicate. Then create an xchan record with the given 'xchan_network' type and a hubloc record with the same 'hubloc_network' with the information given. Currently the plugin will need to create the entire record, but in the future this will be extended so that the plugin only need identify a network name and the record will be populated with all other known values.
An xchan record is always required in order to connect. To connect, create an abook record with the desired permissions.
Additional information that your plugin requires for communication can be stored in the xconfig table and/or abconfig table if there is no convenient or appropriate table column in the xchan or hubloc tables.
When a connection is made, we generally call the notifier (include/notifier.php) to send a message to the remote channel. This is bound to the hook 'permissions_create'. Your plugin will need to handle this in order to send a "follow" or "make friends" message to the other network.
Note: The first stage zot lookup will be replaced with a webfinger lookup. This work is in progress. A separate lookup was required initially as webfinger does not allow non-SSL connections. We will provide non-SSL zot lookups (usually test and development sites) via the "old" XRD based webfinger to avoid this limitation.
[h3]Sending Messages[/h3]
Whenever any message is sent (with the sole exception of directory communications), we invoke the notifier (include/notifier.php), and pass it the type of message and generally an identifier to lookup the information being sent from the database (items or conversational things, private mail, permissions updates, etc.).
The notifier has several hooks which may be used by plugins in different ways, depending on how their delivery loop works. For different message types and complex delivery situations you may need to tie into multiple hooks. The 'permissions_create' hook was mentioned in the first section. There is also a 'permissions_update' message if permissions have changed and the other end of the link needs to be advised. Few services will provide or handle this (as their permissions are static), but it is also used for instance to send profile and profile photo update messages and you may wish to handle this.
The next plugin hook is 'notifier_process'. It is passed an array providing the complete state of the notifier and is called once per notifier invocation. It contains the complete list of recipients (with xchan_network set for each).
There is also 'notifier_hub' which like 'notifier_process' is passed the complete state of the notifier, but the difference is that it is called for each individual hub or distinct URL delivery and may be matched on the hubloc_network type. Hub delivery is much more efficient than recipient delivery but may not be suitable for all protocol stacks.
Your plugin will be required to understand the message state and recipients and translate the sent item to the desired format. You will also be required to check privacy and block communication to anybody but the intended recipients - *if* it is a private communication. The plugin will often at this point stick the message into the queue and return the queue id to the notifier.
Queue handlers exist already for simple posted data. If you create a queue entry with 'post' type we'll open an HTTP POST request and post the data provided and acknowledge success or failure. You can create other forms of communication by providing a different outq_driver type and handling the processing of queue requests yourself. Delivery reporting is available if you wish to acknowledge different error conditions, or anything beyond success/failure. Advanced delivery reporting will also require a custom queue type. The basic 'post' type only deals with success (communication successful with the remote site) and failure.
[h3]Receiving Messages[/h3]
Receiving messages from the remote network will probably require a 'receive' endpoint or module dedicated to your network communication protocol. This is a URL route that your plugin may need to register with the'module_loaded' hook. You module will then take responsibility for importing any data which arrives at that endpoint and translating it to the format required for this project and storing the resulting data. The basic structure we use is an extensible activitystream item but with slightly different field names and several optional fields. It can be easily mapped to an activitystream. Additional data can be stored in the "iconfig" table. item_store() and item_store_update() are generally used to store the data and send appropriate notifications. Similiar facilities are available for private mail and profile information.

View File

@ -263,7 +263,7 @@ function rrmdir($path)
return false; return false;
} }
function channel_remove($channel_id, $local = true, $unset_session=true) { function channel_remove($channel_id, $local = true, $unset_session=false) {
if(! $channel_id) if(! $channel_id)
return; return;
@ -389,8 +389,7 @@ function channel_remove($channel_id, $local = true, $unset_session=true) {
proc_run('php','include/directory.php',$channel_id); proc_run('php','include/directory.php',$channel_id);
if($channel_id == local_channel() && $unset_session) { if($channel_id == local_channel() && $unset_session) {
unset($_SESSION['authenticated']); nuke_session();
unset($_SESSION['uid']);
goaway($a->get_baseurl()); goaway($a->get_baseurl());
} }

View File

@ -846,7 +846,7 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) {
// Caution: This re-uses $sql_options set further above // Caution: This re-uses $sql_options set further above
$r = q("select id, aid, uid, hash, creator, filename, filetype, filesize, revision, folder, os_storage, is_photo, flags, created, edited, allow_cid, allow_gid, deny_cid, deny_gid from attach where uid = %d and hash = '%s' $sql_options limit 1", $r = q("select * from attach where uid = %d and hash = '%s' $sql_options limit 1",
intval($channel_id), intval($channel_id),
dbesc($hash) dbesc($hash)
); );

View File

@ -12,33 +12,6 @@
require_once('include/api_auth.php'); require_once('include/api_auth.php');
require_once('include/security.php'); require_once('include/security.php');
/**
* @brief Resets the current session.
*
* @return void
*/
function nuke_session() {
new_cookie(0); // 0 means delete on browser exit
unset($_SESSION['authenticated']);
unset($_SESSION['account_id']);
unset($_SESSION['uid']);
unset($_SESSION['visitor_id']);
unset($_SESSION['administrator']);
unset($_SESSION['cid']);
unset($_SESSION['theme']);
unset($_SESSION['mobile_theme']);
unset($_SESSION['show_mobile']);
unset($_SESSION['page_flags']);
unset($_SESSION['delegate']);
unset($_SESSION['delegate_channel']);
unset($_SESSION['my_url']);
unset($_SESSION['my_address']);
unset($_SESSION['addr']);
unset($_SESSION['return_url']);
unset($_SESSION['remote_service_class']);
unset($_SESSION['remote_hub']);
}
/** /**
* @brief Verify login credentials. * @brief Verify login credentials.

View File

@ -119,6 +119,8 @@ function datetime_convert($from = 'UTC', $to = 'UTC', $s = 'now', $fmt = "Y-m-d
* @return string * @return string
*/ */
function dob($dob) { function dob($dob) {
$a = get_app();
list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d'); list($year, $month, $day) = sscanf($dob, '%4d-%2d-%2d');
$f = get_config('system', 'birthday_input_format'); $f = get_config('system', 'birthday_input_format');
if (! $f) if (! $f)
@ -129,7 +131,15 @@ function dob($dob) {
else else
$value = (($year) ? datetime_convert('UTC','UTC',$dob,'Y-m-d') : datetime_convert('UTC','UTC',$dob,'m-d')); $value = (($year) ? datetime_convert('UTC','UTC',$dob,'Y-m-d') : datetime_convert('UTC','UTC',$dob,'m-d'));
$o = '<input class="form-control" type="text" name="dob" value="' . $value . '" placeholder="' . t('YYYY-MM-DD or MM-DD') . '" />'; $o = replace_macros(get_markup_template("field_input.tpl"), array('$field' => array(
'dob',
t('Birthday'),
$value,
((intval($value)) ? t('Age: ') . age($value,$a->user['timezone'],$a->user['timezone']) : ''),
'',
'placeholder="' . t('YYYY-MM-DD or MM-DD') .'"'
)));
// if ($dob && $dob != '0000-00-00') // if ($dob && $dob != '0000-00-00')
// $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),mktime(0,0,0,$month,$day,$year),'dob'); // $o = datesel($f,mktime(0,0,0,0,0,1900),mktime(),mktime(0,0,0,$month,$day,$year),'dob');

View File

@ -415,7 +415,7 @@ function init_groups_visitor($contact_id) {
$r = q("SELECT hash FROM `groups` left join group_member on groups.id = group_member.gid WHERE xchan = '%s' ", $r = q("SELECT hash FROM `groups` left join group_member on groups.id = group_member.gid WHERE xchan = '%s' ",
dbesc($contact_id) dbesc($contact_id)
); );
if(count($r)) { if($r) {
foreach($r as $rr) foreach($r as $rr)
$groups[] = $rr['hash']; $groups[] = $rr['hash'];
} }

View File

@ -12,6 +12,38 @@
$session_exists = 0; $session_exists = 0;
$session_expire = 180000; $session_expire = 180000;
/**
* @brief Resets the current session.
*
* @return void
*/
function nuke_session() {
new_cookie(0); // 0 means delete on browser exit
unset($_SESSION['authenticated']);
unset($_SESSION['account_id']);
unset($_SESSION['uid']);
unset($_SESSION['visitor_id']);
unset($_SESSION['administrator']);
unset($_SESSION['cid']);
unset($_SESSION['theme']);
unset($_SESSION['mobile_theme']);
unset($_SESSION['show_mobile']);
unset($_SESSION['page_flags']);
unset($_SESSION['delegate']);
unset($_SESSION['delegate_channel']);
unset($_SESSION['my_url']);
unset($_SESSION['my_address']);
unset($_SESSION['addr']);
unset($_SESSION['return_url']);
unset($_SESSION['remote_service_class']);
unset($_SESSION['remote_hub']);
}
function new_cookie($time) { function new_cookie($time) {
$old_sid = session_id(); $old_sid = session_id();

View File

@ -67,7 +67,8 @@ If you use LetsEncrypt to provide certificates and create a file under
please remove or rename the .well-known directory as soon as the certificate is please remove or rename the .well-known directory as soon as the certificate is
generated. Hubzilla will provide its own handler for ".well-known" services when generated. Hubzilla will provide its own handler for ".well-known" services when
it is installed, and an existing directory in this location may prevent some of it is installed, and an existing directory in this location may prevent some of
these services from working correctly. these services from working correctly. This should not be a problem with Apache,
but may be an issue with nginx or other web server platforms.
1. Requirements 1. Requirements

View File

@ -639,14 +639,13 @@ function profiles_content(&$a) {
else else
$fields = $profile_fields_basic; $fields = $profile_fields_basic;
$hide_friends = array(
$opt_tpl = get_markup_template("profile_hide_friends.tpl"); 'hide_friends',
$hide_friends = replace_macros($opt_tpl,array('$field' => array( t('Hide your connections list from viewers of this profile'),
'hide_friends', $r[0]['hide_friends'],
t('Hide your contact/friend list from viewers of this profile?'), '',
$r[0]['hide_friends'], array(t('No'),t('Yes'))
'', );
)));
$q = q("select * from profdef where true"); $q = q("select * from profdef where true");
if($q) { if($q) {
@ -672,6 +671,7 @@ function profiles_content(&$a) {
$f = 'ymd'; $f = 'ymd';
$is_default = (($r[0]['is_default']) ? 1 : 0); $is_default = (($r[0]['is_default']) ? 1 : 0);
$tpl = get_markup_template("profile_edit.tpl"); $tpl = get_markup_template("profile_edit.tpl");
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
@ -695,23 +695,13 @@ function profiles_content(&$a) {
'$exportable' => feature_enabled(local_channel(),'profile_export'), '$exportable' => feature_enabled(local_channel(),'profile_export'),
'$lbl_import' => t('Import profile from file'), '$lbl_import' => t('Import profile from file'),
'$lbl_export' => t('Export profile to file'), '$lbl_export' => t('Export profile to file'),
'$lbl_profname' => t('Profile Name'),
'$lbl_fullname' => t('Your Full Name'),
'$lbl_title' => t('Title/Description'),
'$lbl_gender' => t('Your Gender'), '$lbl_gender' => t('Your Gender'),
'$lbl_bd' => t("Birthday"),
'$lbl_address' => t('Street Address'),
'$lbl_city' => t('Locality/City'),
'$lbl_zip' => t('Postal/Zip Code'),
'$lbl_country' => t('Country'),
'$lbl_region' => t('Region/State'),
'$lbl_marital' => t('<span class="heart">&hearts;</span> Marital Status'), '$lbl_marital' => t('<span class="heart">&hearts;</span> Marital Status'),
'$lbl_with' => t("Who (if applicable)"), '$lbl_with' => t("Who (if applicable)"),
'$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'), '$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'),
'$lbl_howlong' => t('Since [date]'), '$lbl_howlong' => t('Since [date]'),
'$lbl_sexual' => t('Sexual Preference'), '$lbl_sexual' => t('Sexual Preference'),
'$lbl_homepage' => t('Homepage URL'), '$lbl_homepage' => t('Homepage URL'),
'$lbl_hometown' => t('Hometown'),
'$lbl_politic' => t('Political Views'), '$lbl_politic' => t('Political Views'),
'$lbl_religion' => t('Religious Views'), '$lbl_religion' => t('Religious Views'),
'$lbl_pubkey' => t('Keywords'), '$lbl_pubkey' => t('Keywords'),
@ -733,31 +723,30 @@ function profiles_content(&$a) {
'$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''), '$disabled' => (($is_default) ? 'onclick="return false;" style="color: #BBBBFF;"' : ''),
'$baseurl' => $a->get_baseurl(true), '$baseurl' => $a->get_baseurl(true),
'$profile_id' => $r[0]['id'], '$profile_id' => $r[0]['id'],
'$profile_name' => $r[0]['profile_name'], '$profile_name' => array('profile_name', t('Profile Name'), $r[0]['profile_name'], '', '*'),
'$is_default' => $is_default, '$is_default' => $is_default,
'$default' => t('This is your default profile.') . EOL . translate_scope(map_scope($channel['channel_r_profile'])), '$default' => t('This is your default profile.') . EOL . translate_scope(map_scope($channel['channel_r_profile'])),
'$advanced' => $advanced, '$advanced' => $advanced,
'$name' => $r[0]['name'], '$name' => array('name', t('Your Full Name'), $r[0]['name']),
'$pdesc' => $r[0]['pdesc'], '$pdesc' => array('pdesc', t('Title/Description'), $r[0]['pdesc']),
'$dob' => dob($r[0]['dob']), '$dob' => dob($r[0]['dob']),
'$hide_friends' => $hide_friends, '$hide_friends' => $hide_friends,
'$address' => $r[0]['address'], '$address' => array('address', t('Street Address'), $r[0]['address']),
'$locality' => $r[0]['locality'], '$locality' => array('locality', t('Locality/City'), $r[0]['locality']),
'$region' => $r[0]['region'], '$region' => array('region', t('Region/State'), $r[0]['region']),
'$postal_code' => $r[0]['postal_code'], '$postal_code' => array('postal_code', t('Postal/Zip Code'), $r[0]['postal_code']),
'$country_name' => $r[0]['country_name'], '$country_name' => array('country', t('Country'), $r[0]['country_name']),
'$age' => ((intval($r[0]['dob'])) ? '(' . t('Age: ') . age($r[0]['dob'],$a->user['timezone'],$a->user['timezone']) . ')' : ''),
'$gender' => gender_selector($r[0]['gender']), '$gender' => gender_selector($r[0]['gender']),
'$gender_min' => gender_selector_min($r[0]['gender']), '$gender_min' => gender_selector_min($r[0]['gender']),
'$marital' => marital_selector($r[0]['marital']), '$marital' => marital_selector($r[0]['marital']),
'$marital_min' => marital_selector_min($r[0]['marital']), '$marital_min' => marital_selector_min($r[0]['marital']),
'$with' => $r[0]['with'], '$with' => $r[0]['with'],
'$howlong' => ($r[0]['howlong'] === NULL_DATE ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])), '$howlong' => ($r[0]['howlong'] === NULL_DATE ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])),
'$sexual' => sexpref_selector($r[0]['sexual']), '$sexual' => sexpref_selector($r[0]['sexual']),
'$sexual_min' => sexpref_selector_min($r[0]['sexual']), '$sexual_min' => sexpref_selector_min($r[0]['sexual']),
'$about' => $r[0]['about'], '$about' => $r[0]['about'],
'$homepage' => $r[0]['homepage'], '$homepage' => $r[0]['homepage'],
'$hometown' => $r[0]['hometown'], '$hometown' => array('hometown', t('Hometown'), $r[0]['hometown']),
'$politic' => $r[0]['politic'], '$politic' => $r[0]['politic'],
'$religion' => $r[0]['religion'], '$religion' => $r[0]['religion'],
'$keywords' => $r[0]['keywords'], '$keywords' => $r[0]['keywords'],

File diff suppressed because it is too large Load Diff

17
util/udall Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
if [ ! -d .git ]; then
echo Unable to update `pwd`
exit
fi
git pull
if [ -d extend ] ; then
for a in theme addon widget ; do
if [ -d $a ]; then
for b in `ls extend/$a` ; do
echo Updating $b
'util/update_'$a'_repo' $b
done
fi
done
fi

View File

@ -1 +1 @@
2016-03-08.1330H 2016-03-13.1334H

View File

@ -1,154 +0,0 @@
#profile-edit-default-desc {
background: none repeat scroll 0 0 orange;
font-weight: bold;
margin: 10px;
padding: 20px 5px 10px;
}
#profile-edit-clone-link-wrapper {
float: left;
margin-left: 50px;
margin-bottom: 20px;
width: 300px;
}
#profile-listing-desc, #profile-stuff-link, #profile-listing-new-link-wrapper {
margin: 15px 10px 15px 0;
}
#profile-edit-links-end {
clear: both;
/* margin-bottom: 15px; */
}
.profile-listing-photo {
border: none;
}
.profile-edit-submit-wrapper {
margin-top: 20px;
margin-bottom: 20px;
}
#profile-photo-link-select-wrapper {
margin-top: 2em;
}
#profile-photo-submit-wrapper {
margin-top: 10px;
}
#profile-edit-with-label, #profile-edit-howlong-label {
width: 175px;
margin-left: 50px;
/* margin-bottom: 20px; */
}
/*
#profile-edit-profile-name-label,
#profile-edit-name-label,
#profile-edit-pdesc-label,
#profile-edit-gender-label,
#profile-edit-dob-label,
#profile-edit-address-label,
#profile-edit-locality-label,
#profile-edit-region-label,
#profile-edit-postal-code-label,
#profile-edit-country-name-label,
#profile-edit-marital-label,
#profile-edit-sexual-label,
#profile-edit-politic-label,
#profile-edit-religion-label,
#profile-edit-pubkeywords-label,
#profile-edit-prvkeywords-label,
#profile-edit-homepage-label,
#profile-edit-hometown-label {
float: left;
width: 175px;
}
#profile-edit-profile-name,
#profile-edit-name,
#profile-edit-pdesc,
#gender-select,
#profile-edit-dob,
#profile-edit-address,
#profile-edit-locality,
#profile-edit-region,
#profile-edit-postal-code,
#profile-edit-country-name,
#marital-select,
#sexual-select,
#profile-edit-politic,
#profile-edit-religion,
#profile-edit-pubkeywords,
#profile-edit-prvkeywords,
#profile-in-dir-yes,
#profile-in-dir-no,
#profile-in-netdir-yes,
#profile-in-netdir-no,
#hide-wall-yes,
#hide-wall-no,
#hide-friends-yes,
#hide-friends-no {
float: left;
margin-bottom: 20px;
}
#profile-edit-pdesc-desc,
#profile-edit-pubkeywords-desc,
#profile-edit-prvkeywords-desc {
float: left;
margin-left: 20px;
}
#profile-edit-homepage, #profile-edit-hometown {
float: left;
margin-bottom: 35px;
}
#profile-edit-profile-name-end,
#profile-edit-name-end,
#profile-edit-pdesc-end,
#profile-edit-gender-end,
#profile-edit-dob-end,
#profile-edit-address-end,
#profile-edit-locality-end,
#profile-edit-region-end,
#profile-edit-postal-code-end,
#profile-edit-country-name-end,
#profile-edit-marital-end,
#profile-edit-sexual-end,
#profile-edit-politic-end,
#profile-edit-religion-end,
#profile-edit-pubkeywords-end,
#profile-edit-prvkeywords-end,
#profile-edit-homepage-end,
#profile-edit-hometown-end,
#profile-in-dir-break,
#profile-in-dir-end,
#profile-in-netdir-break,
#profile-in-netdir-end,
#hide-wall-break,
#hide-wall-end,
#hide-friends-break,
#hide-friends-end {
clear: both;
}
*/
/*
#gender-select, #marital-select, #sexual-select {
width: 220px;
}
*/
#profile-edit-profile-name-wrapper .required {
color: #FF0000;
float: left;
}

File diff suppressed because it is too large Load Diff

View File

@ -36,30 +36,30 @@ $a->strings["Not Found"] = "Nicht gefunden";
$a->strings["Page not found."] = "Seite nicht gefunden."; $a->strings["Page not found."] = "Seite nicht gefunden.";
$a->strings["Connect"] = "Verbinden"; $a->strings["Connect"] = "Verbinden";
$a->strings["New window"] = "Neues Fenster"; $a->strings["New window"] = "Neues Fenster";
$a->strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browser Fenster oder Tab"; $a->strings["Open the selected location in a different window or browser tab"] = "Öffne die markierte Adresse in einem neuen Browserfenster oder Tab";
$a->strings["User '%s' deleted"] = "Benutzer '%s' gelöscht"; $a->strings["User '%s' deleted"] = "Benutzer '%s' gelöscht";
$a->strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden."; $a->strings["No username found in import file."] = "Kein Benutzername in der Importdatei gefunden.";
$a->strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen."; $a->strings["Unable to create a unique channel address. Import failed."] = "Es war nicht möglich, eine eindeutige Kanal-Adresse zu erzeugen. Der Import ist fehlgeschlagen.";
$a->strings["Import completed."] = "Import abgeschlossen."; $a->strings["Import completed."] = "Import abgeschlossen.";
$a->strings["Not a valid email address"] = "Ungültige E-Mail-Adresse"; $a->strings["Not a valid email address"] = "Ungültige E-Mail-Adresse";
$a->strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist dieser Seite nicht erlaubt"; $a->strings["Your email domain is not among those allowed on this site"] = "Deine E-Mail-Adresse ist auf dieser Seite nicht erlaubt";
$a->strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert."; $a->strings["Your email address is already registered at this site."] = "Deine E-Mail-Adresse ist auf dieser Seite bereits registriert.";
$a->strings["An invitation is required."] = "Eine Einladung wird benötigt"; $a->strings["An invitation is required."] = "Eine Einladung wird benötigt.";
$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden"; $a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht bestätigt werden.";
$a->strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein."; $a->strings["Please enter the required information."] = "Bitte gib die benötigten Informationen ein.";
$a->strings["Failed to store account information."] = "Speichern der Account-Informationen fehlgeschlagen"; $a->strings["Failed to store account information."] = "Speichern der Nutzerkontodaten fehlgeschlagen.";
$a->strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s"; $a->strings["Registration confirmation for %s"] = "Registrierungsbestätigung für %s";
$a->strings["Registration request at %s"] = "Registrierungsanfrage auf %s"; $a->strings["Registration request at %s"] = "Registrierungsanfrage auf %s";
$a->strings["Administrator"] = "Administrator"; $a->strings["Administrator"] = "Administrator";
$a->strings["your registration password"] = "Dein Registrierungspasswort"; $a->strings["your registration password"] = "Dein Registrierungspasswort";
$a->strings["Registration details for %s"] = "Registrierungsdetails für %s"; $a->strings["Registration details for %s"] = "Registrierungsdetails für %s";
$a->strings["Account approved."] = "Account bestätigt."; $a->strings["Account approved."] = "Nutzerkonto bestätigt.";
$a->strings["Registration revoked for %s"] = "Registrierung für %s widerrufen"; $a->strings["Registration revoked for %s"] = "Registrierung für %s wurde widerrufen";
$a->strings["Account verified. Please login."] = "Konto geprüft. Bitte melde Dich an!"; $a->strings["Account verified. Please login."] = "Nutzerkonto wurde bestätigt. Bitte melde Dich an!";
$a->strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen."; $a->strings["Click here to upgrade."] = "Klicke hier, um das Upgrade durchzuführen.";
$a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements."; $a->strings["This action exceeds the limits set by your subscription plan."] = "Diese Aktion überschreitet die Grenzen Ihres Abonnements.";
$a->strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar."; $a->strings["This action is not available under your subscription plan."] = "Diese Aktion ist in Ihrem Abonnement nicht verfügbar.";
$a->strings["Visible to your default audience"] = "Standard-Sichtbarkeit"; $a->strings["Visible to your default audience"] = "Standard-Sichtbarkeit gemäß Kanaleinstellungen";
$a->strings["Show"] = "Anzeigen"; $a->strings["Show"] = "Anzeigen";
$a->strings["Don't show"] = "Nicht anzeigen"; $a->strings["Don't show"] = "Nicht anzeigen";
$a->strings["Other networks and post services"] = "Andere Netzwerke und Platformen"; $a->strings["Other networks and post services"] = "Andere Netzwerke und Platformen";
@ -96,26 +96,11 @@ $a->strings["Random Channel"] = "Zufälliger Kanal";
$a->strings["Invite"] = "Einladen"; $a->strings["Invite"] = "Einladen";
$a->strings["Features"] = "Funktionen"; $a->strings["Features"] = "Funktionen";
$a->strings["Language"] = "Sprache"; $a->strings["Language"] = "Sprache";
$a->strings["Post"] = "Beitrag"; $a->strings["Post"] = "Beitrag schreiben";
$a->strings["Profile Photo"] = "Profilfoto"; $a->strings["Profile Photo"] = "Profilfoto";
$a->strings["Update"] = "Aktualisieren"; $a->strings["Update"] = "Aktualisieren";
$a->strings["Install"] = "Installieren"; $a->strings["Install"] = "Installieren";
$a->strings["Purchase"] = "Kaufen"; $a->strings["Purchase"] = "Kaufen";
$a->strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
$a->strings["No source file."] = "Keine Quelldatei.";
$a->strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
$a->strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
$a->strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
$a->strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
$a->strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
$a->strings["Path not available."] = "Pfad nicht verfügbar.";
$a->strings["Empty pathname"] = "Leere Pfadangabe";
$a->strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
$a->strings["Path not found."] = "Pfad nicht gefunden.";
$a->strings["mkdir failed."] = "mkdir fehlgeschlagen.";
$a->strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
$a->strings["Empty path"] = "Leere Pfadangabe";
$a->strings["Logged out."] = "Ausgeloggt."; $a->strings["Logged out."] = "Ausgeloggt.";
$a->strings["Failed authentication"] = "Authentifizierung fehlgeschlagen"; $a->strings["Failed authentication"] = "Authentifizierung fehlgeschlagen";
$a->strings["Login failed."] = "Login fehlgeschlagen."; $a->strings["Login failed."] = "Login fehlgeschlagen.";
@ -125,25 +110,12 @@ $a->strings["\$Projectname event notification:"] = "\$Projectname-Terminbenachri
$a->strings["Starts:"] = "Beginnt:"; $a->strings["Starts:"] = "Beginnt:";
$a->strings["Finishes:"] = "Endet:"; $a->strings["Finishes:"] = "Endet:";
$a->strings["Location:"] = "Ort:"; $a->strings["Location:"] = "Ort:";
$a->strings["Image/photo"] = "Bild/Foto";
$a->strings["Encrypted content"] = "Verschlüsselter Inhalt";
$a->strings["Install %s element: "] = "Element %s installieren: ";
$a->strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
$a->strings["webpage"] = "Webseite";
$a->strings["layout"] = "Layout";
$a->strings["block"] = "Block";
$a->strings["menu"] = "Menü";
$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
$a->strings["post"] = "Beitrag";
$a->strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen";
$a->strings["$1 spoiler"] = "$1 Spoiler";
$a->strings["$1 wrote:"] = "$1 schrieb:";
$a->strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen"; $a->strings["%1\$s's bookmarks"] = "%1\$ss Lesezeichen";
$a->strings["Missing room name"] = "Der Chatraum hat keinen Namen"; $a->strings["Missing room name"] = "Der Chatraum hat keinen Namen";
$a->strings["Duplicate room name"] = "Name des Chatraums bereits vergeben"; $a->strings["Duplicate room name"] = "Name des Chatraums bereits vergeben";
$a->strings["Invalid room specifier."] = "Ungültiger Raumbezeichner."; $a->strings["Invalid room specifier."] = "Ungültiger Raumbezeichner.";
$a->strings["Room not found."] = "Chatraum konnte nicht gefunden werden."; $a->strings["Room not found."] = "Chatraum konnte nicht gefunden werden.";
$a->strings["Room is full"] = "Der Raum ist voll"; $a->strings["Room is full"] = "Der Chatraum ist voll";
$a->strings["Default"] = "Standard"; $a->strings["Default"] = "Standard";
$a->strings["%d invitation available"] = array( $a->strings["%d invitation available"] = array(
0 => "%d Einladung verfügbar", 0 => "%d Einladung verfügbar",
@ -340,6 +312,19 @@ $a->strings["Title"] = "Titel";
$a->strings["Created"] = "Erstellt"; $a->strings["Created"] = "Erstellt";
$a->strings["Edited"] = "Geändert"; $a->strings["Edited"] = "Geändert";
$a->strings["Profile Photos"] = "Profilfotos"; $a->strings["Profile Photos"] = "Profilfotos";
$a->strings["Image/photo"] = "Bild/Foto";
$a->strings["Encrypted content"] = "Verschlüsselter Inhalt";
$a->strings["Install %s element: "] = "Element %s installieren: ";
$a->strings["This post contains an installable %s element, however you lack permissions to install it on this site."] = "Dieser Beitrag beinhaltet ein installierbares %s Element, aber Du hast nicht die nötigen Rechte, um es auf diesem Hub zu installieren.";
$a->strings["webpage"] = "Webseite";
$a->strings["layout"] = "Layout";
$a->strings["block"] = "Block";
$a->strings["menu"] = "Menü";
$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "%1\$s schrieb den folgenden %2\$s %3\$s";
$a->strings["post"] = "Beitrag";
$a->strings["Different viewers will see this text differently"] = "Verschiedene Betrachter werden diesen Text unterschiedlich sehen";
$a->strings["$1 spoiler"] = "$1 Spoiler";
$a->strings["$1 wrote:"] = "$1 schrieb:";
$a->strings["Male"] = "Männlich"; $a->strings["Male"] = "Männlich";
$a->strings["Female"] = "Weiblich"; $a->strings["Female"] = "Weiblich";
$a->strings["Currently Male"] = "Momentan männlich"; $a->strings["Currently Male"] = "Momentan männlich";
@ -453,6 +438,21 @@ $a->strings["Invalid data packet"] = "Ungültiges Datenpaket";
$a->strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren"; $a->strings["Unable to verify channel signature"] = "Konnte die Signatur des Kanals nicht verifizieren";
$a->strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren"; $a->strings["Unable to verify site signature for %s"] = "Kann die Signatur der Seite von %s nicht verifizieren";
$a->strings["invalid target signature"] = "Ungültige Signatur des Ziels"; $a->strings["invalid target signature"] = "Ungültige Signatur des Ziels";
$a->strings["Item was not found."] = "Beitrag wurde nicht gefunden.";
$a->strings["No source file."] = "Keine Quelldatei.";
$a->strings["Cannot locate file to replace"] = "Kann Datei zum Ersetzen nicht finden";
$a->strings["Cannot locate file to revise/update"] = "Kann Datei zum Prüfen/Aktualisieren nicht finden";
$a->strings["File exceeds size limit of %d"] = "Datei überschreitet das Größen-Limit von %d";
$a->strings["You have reached your limit of %1$.0f Mbytes attachment storage."] = "Die Größe Deiner Datei-Anhänge hat das Maximum von %1$.0f MByte erreicht.";
$a->strings["File upload failed. Possible system limit or action terminated."] = "Datei-Upload fehlgeschlagen. Mögliche Systembegrenzung oder abgebrochener Prozess.";
$a->strings["Stored file could not be verified. Upload failed."] = "Gespeichert Datei konnte nicht verifiziert werden. Upload abgebrochen.";
$a->strings["Path not available."] = "Pfad nicht verfügbar.";
$a->strings["Empty pathname"] = "Leere Pfadangabe";
$a->strings["duplicate filename or path"] = "doppelter Dateiname oder Pfad";
$a->strings["Path not found."] = "Pfad nicht gefunden.";
$a->strings["mkdir failed."] = "mkdir fehlgeschlagen.";
$a->strings["database storage failed."] = "Speichern in der Datenbank fehlgeschlagen.";
$a->strings["Empty path"] = "Leere Pfadangabe";
$a->strings["Frequently"] = "Häufig"; $a->strings["Frequently"] = "Häufig";
$a->strings["Hourly"] = "Stündlich"; $a->strings["Hourly"] = "Stündlich";
$a->strings["Twice daily"] = "Zwei Mal am Tag"; $a->strings["Twice daily"] = "Zwei Mal am Tag";
@ -502,13 +502,13 @@ $a->strings["Navigation Channel Select"] = "Kanal-Auswahl in der Navigationsleis
$a->strings["Change channels directly from within the navigation dropdown menu"] = "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü"; $a->strings["Change channels directly from within the navigation dropdown menu"] = "Ermöglicht den direkten Wechsel zu anderen Kanälen über das Navigationsmenü";
$a->strings["Photo Location"] = "Aufnahmeort"; $a->strings["Photo Location"] = "Aufnahmeort";
$a->strings["If location data is available on uploaded photos, link this to a map."] = "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte"; $a->strings["If location data is available on uploaded photos, link this to a map."] = "Verlinkt den Aufnahmeort von Fotos (falls verfügbar) auf einer Karte";
$a->strings["Smart Birthdays"] = "Smarte Geburtstage";
$a->strings["Make birthday events timezone aware in case your friends are scattered across the planet."] = "Stellt für Geburtstage einen Zeitzonenbezug her, falls deine Freunde über den ganzen Planeten verstreut sind.";
$a->strings["Expert Mode"] = "Expertenmodus"; $a->strings["Expert Mode"] = "Expertenmodus";
$a->strings["Enable Expert Mode to provide advanced configuration options"] = "Aktiviert den Expertenmodus, der fortgeschrittene Konfigurationsoptionen zur Verfügung stellt"; $a->strings["Enable Expert Mode to provide advanced configuration options"] = "Aktiviert den Expertenmodus, der fortgeschrittene Konfigurationsoptionen zur Verfügung stellt";
$a->strings["Premium Channel"] = "Premium-Kanal"; $a->strings["Premium Channel"] = "Premium-Kanal";
$a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen"; $a->strings["Allows you to set restrictions and terms on those that connect with your channel"] = "Ermöglicht es, Einschränkungen und Bedingungen für Verbindungen dieses Kanals festzulegen";
$a->strings["Post Composition Features"] = "Nachbearbeitungsfunktionen"; $a->strings["Post Composition Features"] = "Nachbearbeitungsfunktionen";
$a->strings["Use Markdown"] = "Markdown benutzen";
$a->strings["Allow use of \"Markdown\" to format posts"] = "Erlaubt die Verwendung von Markdown-Syntax zur Formatierung von Beiträgen";
$a->strings["Large Photos"] = "Große Fotos"; $a->strings["Large Photos"] = "Große Fotos";
$a->strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet."; $a->strings["Include large (1024px) photo thumbnails in posts. If not enabled, use small (640px) photo thumbnails"] = "Große Vorschaubilder (1024px) in Beiträgen anzeigen. Falls nicht aktiviert, werden kleine Vorschaubilder (640px) verwendet.";
$a->strings["Channel Sources"] = "Kanal-Quellen"; $a->strings["Channel Sources"] = "Kanal-Quellen";
@ -600,6 +600,7 @@ $a->strings["Chat Rooms"] = "Chaträume";
$a->strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms"; $a->strings["Bookmarked Chatrooms"] = "Gespeicherte Chatrooms";
$a->strings["Suggested Chatrooms"] = "Chatraum-Vorschläge"; $a->strings["Suggested Chatrooms"] = "Chatraum-Vorschläge";
$a->strings["photo/image"] = "Foto/Bild"; $a->strings["photo/image"] = "Foto/Bild";
$a->strings["Click to show more"] = "Klick, um mehr anzuzeigen";
$a->strings["Rating Tools"] = "Bewertungswerkzeuge"; $a->strings["Rating Tools"] = "Bewertungswerkzeuge";
$a->strings["Rate Me"] = "Bewerte mich"; $a->strings["Rate Me"] = "Bewerte mich";
$a->strings["View Ratings"] = "Bewertungen ansehen"; $a->strings["View Ratings"] = "Bewertungen ansehen";
@ -618,7 +619,7 @@ $a->strings["Security"] = "Sicherheit";
$a->strings["Plugins"] = "Plug-Ins"; $a->strings["Plugins"] = "Plug-Ins";
$a->strings["Themes"] = "Themes"; $a->strings["Themes"] = "Themes";
$a->strings["Inspect queue"] = "Warteschlange kontrollieren"; $a->strings["Inspect queue"] = "Warteschlange kontrollieren";
$a->strings["Profile Config"] = "Profilkonfiguration"; $a->strings["Profile Fields"] = "Profil Felder";
$a->strings["DB updates"] = "DB-Aktualisierungen"; $a->strings["DB updates"] = "DB-Aktualisierungen";
$a->strings["Logs"] = "Protokolle"; $a->strings["Logs"] = "Protokolle";
$a->strings["Plugin Features"] = "Plug-In Funktionen"; $a->strings["Plugin Features"] = "Plug-In Funktionen";
@ -742,11 +743,9 @@ $a->strings["Default Profile"] = "Standard-Profil";
$a->strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar."; $a->strings["Requested channel is not available."] = "Angeforderte Kanal nicht verfügbar.";
$a->strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar."; $a->strings["Requested profile is not available."] = "Erwünschte Profil ist nicht verfügbar.";
$a->strings["Change profile photo"] = "Profilfoto ändern"; $a->strings["Change profile photo"] = "Profilfoto ändern";
$a->strings["Profiles"] = "Profile";
$a->strings["Manage/edit profiles"] = "Profile verwalten/bearbeiten";
$a->strings["Create New Profile"] = "Neues Profil erstellen"; $a->strings["Create New Profile"] = "Neues Profil erstellen";
$a->strings["Profile Image"] = "Profilfoto:"; $a->strings["Profile Image"] = "Profilfoto:";
$a->strings["visible to everybody"] = "sichtbar für jeden"; $a->strings["Visible to everybody"] = "Für jeden sichtbar";
$a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten"; $a->strings["Edit visibility"] = "Sichtbarkeit bearbeiten";
$a->strings["Gender:"] = "Geschlecht:"; $a->strings["Gender:"] = "Geschlecht:";
$a->strings["Status:"] = "Status:"; $a->strings["Status:"] = "Status:";
@ -1315,7 +1314,6 @@ $a->strings["Nothing to import."] = "Nichts zu importieren.";
$a->strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden"; $a->strings["Unable to download data from old server"] = "Daten können vom alten Server nicht heruntergeladen werden";
$a->strings["Imported file is empty."] = "Die importierte Datei ist leer."; $a->strings["Imported file is empty."] = "Die importierte Datei ist leer.";
$a->strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen."; $a->strings["Warning: Database versions differ by %1\$d updates."] = "Achtung: Datenbankversionen unterscheiden sich um %1\$d Aktualisierungen.";
$a->strings["Server platform is not compatible. Operation not permitted."] = "Die Serverplattform ist inkompatibel. Dieser Vorgang ist daher nicht erlaubt.";
$a->strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen."; $a->strings["No channel. Import failed."] = "Kein Kanal. Import fehlgeschlagen.";
$a->strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen."; $a->strings["You must be logged in to use this feature."] = "Du musst angemeldet sein um diese Funktion zu nutzen.";
$a->strings["Import Channel"] = "Kanal importieren"; $a->strings["Import Channel"] = "Kanal importieren";
@ -1638,7 +1636,7 @@ $a->strings["Expiration period in days for imported (grid/network) content"] = "
$a->strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte"; $a->strings["0 for no expiration of imported content"] = "0 = keine Löschung importierter Inhalte";
$a->strings["Off"] = "Aus"; $a->strings["Off"] = "Aus";
$a->strings["On"] = "An"; $a->strings["On"] = "An";
$a->strings["Lock feature %s"] = "Feature festlegen %s"; $a->strings["Lock feature %s"] = "Blockiere die Funktion %s";
$a->strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten"; $a->strings["Manage Additional Features"] = "Zusätzliche Funktionen verwalten";
$a->strings["No server found"] = "Kein Server gefunden"; $a->strings["No server found"] = "Kein Server gefunden";
$a->strings["ID"] = "ID"; $a->strings["ID"] = "ID";
@ -1756,6 +1754,12 @@ $a->strings["Help text"] = "Hilfetext";
$a->strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)"; $a->strings["Additional info (optional)"] = "Zusätzliche Informationen (optional)";
$a->strings["Field definition not found"] = "Feld-Definition nicht gefunden"; $a->strings["Field definition not found"] = "Feld-Definition nicht gefunden";
$a->strings["Edit Profile Field"] = "Profilfeld bearbeiten"; $a->strings["Edit Profile Field"] = "Profilfeld bearbeiten";
$a->strings["Basic Profile Fields"] = "Notwendige Profil Felder";
$a->strings["Advanced Profile Fields"] = "Erweiterte Profil Felder";
$a->strings["(In addition to basic fields)"] = "(zusätzlich zu notwendige Felder)";
$a->strings["All available fields"] = "Alle verfügbaren Felder";
$a->strings["Custom Fields"] = "Benutzerdefinierte Felder";
$a->strings["Create Custom Field"] = "Erstelle benutzerdefiniertes Feld";
$a->strings["Poke somebody"] = "Jemanden anstupsen"; $a->strings["Poke somebody"] = "Jemanden anstupsen";
$a->strings["Poke/Prod"] = "Anstupsen/Knuffen"; $a->strings["Poke/Prod"] = "Anstupsen/Knuffen";
$a->strings["Poke, prod or do other things to somebody"] = "Jemanden anstupsen, knuffen oder sonstiges"; $a->strings["Poke, prod or do other things to somebody"] = "Jemanden anstupsen, knuffen oder sonstiges";
@ -1799,29 +1803,29 @@ $a->strings["Profile updated."] = "Profil aktualisiert.";
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?"; $a->strings["Hide your contact/friend list from viewers of this profile?"] = "Deine Kontaktliste vor Betrachtern dieses Profils verbergen?";
$a->strings["Edit Profile Details"] = "Bearbeite Profil-Details"; $a->strings["Edit Profile Details"] = "Bearbeite Profil-Details";
$a->strings["View this profile"] = "Dieses Profil ansehen"; $a->strings["View this profile"] = "Dieses Profil ansehen";
$a->strings["Change Cover Photo"] = "Titelbild ändern";
$a->strings["Change Profile Photo"] = "Profilfoto ändern"; $a->strings["Change Profile Photo"] = "Profilfoto ändern";
$a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen"; $a->strings["Create a new profile using these settings"] = "Neues Profil anlegen und diese Einstellungen übernehmen";
$a->strings["Clone this profile"] = "Dieses Profil klonen"; $a->strings["Clone this profile"] = "Dieses Profil klonen";
$a->strings["Delete this profile"] = "Dieses Profil löschen"; $a->strings["Delete this profile"] = "Dieses Profil löschen";
$a->strings["Import profile from file"] = "Profil aus einer Datei importieren"; $a->strings["Import profile from file"] = "Profil aus einer Datei importieren";
$a->strings["Export profile to file"] = "Profil in eine Datei exportieren"; $a->strings["Export profile to file"] = "Profil in eine Datei exportieren";
$a->strings["Profile Name:"] = "Profilname:"; $a->strings["Profile Name"] = "Profilname";
$a->strings["Your Full Name:"] = "Dein voller Name:"; $a->strings["Your Full Name"] = "Dein voller Name";
$a->strings["Title/Description:"] = "Titel/Beschreibung:"; $a->strings["Title/Description"] = "Titel/Beschreibung";
$a->strings["Your Gender:"] = "Dein Geschlecht:"; $a->strings["Your Gender"] = "Dein Geschlecht";
$a->strings["Birthday :"] = "Geburtstag:"; $a->strings["Birthday"] = "Geburtstag";
$a->strings["Street Address:"] = "Straße und Hausnummer:"; $a->strings["Street Address"] = "Straße und Hausnummer";
$a->strings["Locality/City:"] = "Wohnort:"; $a->strings["Locality/City"] = "Wohnort";
$a->strings["Postal/Zip Code:"] = "Postleitzahl:"; $a->strings["Postal/Zip Code"] = "Postleitzahl";
$a->strings["Country:"] = "Land:"; $a->strings["Country"] = "Land";
$a->strings["Region/State:"] = "Region/Bundesstaat:"; $a->strings["Region/State"] = "Region/Bundesstaat";
$a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus:"; $a->strings["<span class=\"heart\">&hearts;</span> Marital Status"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus";
$a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)"; $a->strings["Who (if applicable)"] = "Wer (falls anwendbar)";
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com"; $a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
$a->strings["Since [date]:"] = "Seit [Datum]:"; $a->strings["Since [date]"] = "Seit [Datum]";
$a->strings["Homepage URL:"] = "Homepage URL:"; $a->strings["Hometown"] = "Heimatort";
$a->strings["Religious Views:"] = "Religiöse Ansichten:"; $a->strings["Religious Views"] = "Religiöse Ansichten";
$a->strings["Keywords:"] = "Schlüsselwörter:";
$a->strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software"; $a->strings["Example: fishing photography software"] = "Beispiel: Angeln Fotografie Software";
$a->strings["Used in directory listings"] = "Wird in Verzeichnis-Auflistungen verwendet"; $a->strings["Used in directory listings"] = "Wird in Verzeichnis-Auflistungen verwendet";
$a->strings["Tell us about yourself..."] = "Erzähle uns ein wenig von Dir …"; $a->strings["Tell us about yourself..."] = "Erzähle uns ein wenig von Dir …";

View File

@ -21,32 +21,19 @@
<div id="profile-edit-links-end"></div> <div id="profile-edit-links-end"></div>
{{if $is_default}} {{if $is_default}}
<p class="section-content-info-wrapper">{{$default}}</p> <div class="section-content-info-wrapper">{{$default}}</div>
{{/if}} {{/if}}
<div id="profile-edit-wrapper" > <div id="profile-edit-wrapper" >
<input type='hidden' name='form_security_token' value='{{$form_security_token}}'> <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
<div id="profile-edit-profile-name-wrapper" class="form-group field"> {{include file="field_input.tpl" field=$profile_name}}
<label id="profile-edit-profile-name-label" for="profile-edit-profile-name" ><span class="required">*</span>&nbsp;{{$lbl_profname}} </label>
<input type="text" class="form-control" size="32" name="profile_name" id="profile-edit-profile-name" value="{{$profile_name}}" />
</div>
<div id="profile-edit-profile-name-end"></div>
<div id="profile-edit-name-wrapper" class="form-group field" >
<label id="profile-edit-name-label" for="profile-edit-name" >{{$lbl_fullname}} </label>
<input type="text" class="form-control" size="32" name="name" id="profile-edit-name" value="{{$name}}" />
</div>
<div id="profile-edit-name-end"></div>
{{include file="field_input.tpl" field=$name}}
{{if $fields.pdesc}} {{if $fields.pdesc}}
<div id="profile-edit-pdesc-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$pdesc}}
<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >{{$lbl_title}} </label>
<input type="text" class="form-control" size="32" name="pdesc" id="profile-edit-pdesc" value="{{$pdesc}}" />
</div>
<div id="profile-edit-pdesc-end"></div>
{{/if}} {{/if}}
{{if $fields.gender}} {{if $fields.gender}}
@ -62,74 +49,44 @@
{{/if}} {{/if}}
{{if $fields.dob}} {{if $fields.dob}}
<div id="profile-edit-dob-wrapper" class="form-group field" > {{$dob}}
<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}} {{/if}}
{{$hide_friends}} {{include file="field_checkbox.tpl" field=$hide_friends}}
<div class="profile-edit-submit-wrapper" > <div class="form-group" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" /> <button type="submit" name="submit" class="btn btn-primary" value="{{$submit}}">{{$submit}}</button>
</div> </div>
<div class="profile-edit-submit-end"></div> <div class="clear"></div>
{{if $fields.address}} {{if $fields.address}}
<div id="profile-edit-address-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$address}}
<label id="profile-edit-address-label" for="profile-edit-address" >{{$lbl_address}} </label>
<input type="text" class="form-control" size="32" name="address" id="profile-edit-address" value="{{$address}}" />
</div>
<div id="profile-edit-address-end"></div>
{{/if}} {{/if}}
{{if $fields.locality}} {{if $fields.locality}}
<div id="profile-edit-locality-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$locality}}
<label id="profile-edit-locality-label" for="profile-edit-locality" >{{$lbl_city}} </label>
<input type="text" class="form-control" size="32" name="locality" id="profile-edit-locality" value="{{$locality}}" />
</div>
<div id="profile-edit-locality-end"></div>
{{/if}} {{/if}}
{{if $fields.postal_code}} {{if $fields.postal_code}}
<div id="profile-edit-postal-code-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$postal_code}}
<label id="profile-edit-postal-code-label" for="profile-edit-postal-code" >{{$lbl_zip}} </label>
<input type="text" class="form-control" size="32" name="postal_code" id="profile-edit-postal-code" value="{{$postal_code}}" />
</div>
<div id="profile-edit-postal-code-end"></div>
{{/if}} {{/if}}
{{if $fields.region}} {{if $fields.region}}
<div id="profile-edit-region-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$region}}
<label id="profile-edit-region-label" for="profile-edit-region" >{{$lbl_region}} </label>
<input type="text" class="form-control" size="32" name="region" id="profile-edit-region" value="{{$region}}" />
</div>
<div id="profile-edit-region-end"></div>
{{/if}} {{/if}}
{{if $fields.country_name}} {{if $fields.country_name}}
<div id="profile-edit-country-name-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$country_name}}
<label id="profile-edit-country-name-label" for="profile-edit-country-name" >{{$lbl_country}} </label>
<input type="text" class="form-control" size="32" name="country_name" id="profile-edit-country-name" value="{{$country_name}}" />
</div>
<div id="profile-edit-country-name-end"></div>
{{/if}} {{/if}}
{{if $fields.hometown}} {{if $fields.hometown}}
<div id="profile-edit-hometown-wrapper" class="form-group field" > {{include file="field_input.tpl" field=$hometown}}
<label id="profile-edit-hometown-label" for="profile-edit-hometown" >{{$lbl_hometown}} </label>
<input type="text" class="form-control" size="32" name="hometown" id="profile-edit-hometown" value="{{$hometown}}" />
</div>
<div id="profile-edit-hometown-end"></div>
{{/if}} {{/if}}
<div class="profile-edit-submit-wrapper" class="form-group field" > <div class="form-group" >
<input type="submit" name="submit" class="profile-edit-submit-button" value="{{$submit}}" /> <button type="submit" name="submit" class="btn btn-primary" value="{{$submit}}">{{$submit}}</button>
</div> </div>
<div class="profile-edit-submit-end"></div> <div class="clear"></div>
{{if $fields.marital }} {{if $fields.marital }}
<div id="profile-edit-marital-wrapper" class="form-group field" > <div id="profile-edit-marital-wrapper" class="form-group field" >
@ -141,19 +98,25 @@
{{/if}} {{/if}}
</div> </div>
<div class="clear"></div> <div class="clear"></div>
{{if $fields.with}} {{if $fields.with}}
<div class="form-group">
<label id="profile-edit-with-label" for="profile-edit-with" > {{$lbl_with}} </label> <label id="profile-edit-with-label" for="profile-edit-with" > {{$lbl_with}} </label>
<input type="text" class="form-control" size="32" name="with" id="profile-edit-with" title="{{$lbl_ex1}}" value="{{$with}}" /> <input type="text" class="form-control" size="32" name="with" id="profile-edit-with" title="{{$lbl_ex1}}" value="{{$with}}" />
<div class="clear"></div> <div class="clear"></div>
</div>
{{/if}} {{/if}}
{{if $fields.howlong}} {{if $fields.howlong}}
<div class="form-group">
<label id="profile-edit-howlong-label" for="profile-edit-howlong" > {{$lbl_howlong}} </label> <label id="profile-edit-howlong-label" for="profile-edit-howlong" > {{$lbl_howlong}} </label>
<input type="text" class="form-control" size="32" name="howlong" id="profile-edit-howlong" title="{{$lbl_howlong}}" value="{{$howlong}}" /> <input type="text" class="form-control" size="32" name="howlong" id="profile-edit-howlong" title="{{$lbl_howlong}}" value="{{$howlong}}" />
<div class="clear"></div> <div class="clear"></div>
</div>
{{/if}} {{/if}}
<div id="profile-edit-marital-end"></div> <div id="profile-edit-marital-end"></div>
{{/if}} {{/if}}
<br /><br />
{{if $fields.homepage}} {{if $fields.homepage}}
<div id="profile-edit-homepage-wrapper" class="form-group field" > <div id="profile-edit-homepage-wrapper" class="form-group field" >
<label id="profile-edit-homepage-label" for="profile-edit-homepage" >{{$lbl_homepage}} </label> <label id="profile-edit-homepage-label" for="profile-edit-homepage" >{{$lbl_homepage}} </label>

View File

@ -1,20 +0,0 @@
{{include file="field_checkbox.tpl"}}
{{*
<p id="hide-friends-text">
{{$desc}}
</p>
<div id="hide-friends-yes-wrapper">
<label id="hide-friends-yes-label" for="hide-friends-yes">{{$yes_str}}</label>
<input type="radio" name="hide-friends" id="hide-friends-yes" {{$yes_selected}} value="1" />
<div id="hide-friends-break" ></div>
</div>
<div id="hide-friends-no-wrapper">
<label id="hide-friends-no-label" for="hide-friends-no">{{$no_str}}</label>
<input type="radio" name="hide-friends" id="hide-friends-no" {{$no_selected}} value="0" />
<div id="hide-friends-end"></div>
</div>
*}}