aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZach Prezkuta <fermion@gmx.com>2013-01-06 14:42:51 -0700
committerZach Prezkuta <fermion@gmx.com>2013-01-06 15:57:11 -0700
commita0d19ffb7241a1c7a4b85e6d0fd58fbb2f718468 (patch)
tree280d792355cb2e60cf62e8451b6d8afbbfcc7c0d
parent61b8ea9e1af74e2056e18b02c170a899de9abd1b (diff)
downloadvolse-hubzilla-a0d19ffb7241a1c7a4b85e6d0fd58fbb2f718468.tar.gz
volse-hubzilla-a0d19ffb7241a1c7a4b85e6d0fd58fbb2f718468.tar.bz2
volse-hubzilla-a0d19ffb7241a1c7a4b85e6d0fd58fbb2f718468.zip
implement Smarty3
-rw-r--r--boot.php129
-rw-r--r--include/ItemObject.php27
-rw-r--r--include/conversation.php3
-rw-r--r--include/features.php2
-rw-r--r--include/friendica_smarty.php43
-rw-r--r--include/plugin.php80
-rw-r--r--include/text.php33
-rw-r--r--index.php22
-rw-r--r--mod/admin.php2
-rw-r--r--mod/channel.php26
-rw-r--r--mod/display.php3
-rw-r--r--mod/fbrowser.php22
-rw-r--r--mod/hcard.php3
-rw-r--r--mod/hostxrd.php13
-rw-r--r--mod/message.php49
-rw-r--r--mod/photos.php105
-rw-r--r--mod/profile.php31
-rw-r--r--mod/profile_photo.php12
-rw-r--r--mod/profiles.php278
-rw-r--r--mod/profperm.php9
-rw-r--r--mod/viewcontacts.php10
-rw-r--r--mod/xrd.php2
-rwxr-xr-xmods/friendica-to-smarty-tpl.py198
-rw-r--r--view/theme/fancyred/php/config.php2
-rw-r--r--view/theme/fancyred/php/theme.php1
-rw-r--r--view/theme/redbasic/php/config.php2
-rw-r--r--view/theme/redbasic/php/theme.php1
-rw-r--r--view/theme/redbasic/tpl/smarty3/lang_selector.tpl10
-rw-r--r--view/theme/redbasic/tpl/smarty3/moderated_comment.tpl61
-rw-r--r--view/theme/redbasic/tpl/smarty3/profile_vcard.tpl51
-rw-r--r--view/theme/redbasic/tpl/smarty3/prv_message.tpl39
-rw-r--r--view/tpl/admin_users.tpl2
-rw-r--r--view/tpl/directory_item.tpl2
-rw-r--r--view/tpl/filebrowser.tpl2
-rw-r--r--view/tpl/install_checks.tpl2
-rw-r--r--view/tpl/notifications_network_item.tpl4
-rw-r--r--view/tpl/smarty3/404.tpl1
-rw-r--r--view/tpl/smarty3/abook_edit.tpl45
-rw-r--r--view/tpl/smarty3/acl_selector.tpl28
-rw-r--r--view/tpl/smarty3/admin_aside.tpl42
-rw-r--r--view/tpl/smarty3/admin_logs.tpl19
-rw-r--r--view/tpl/smarty3/admin_plugins.tpl15
-rw-r--r--view/tpl/smarty3/admin_plugins_details.tpl36
-rw-r--r--view/tpl/smarty3/admin_remoteupdate.tpl98
-rw-r--r--view/tpl/smarty3/admin_site.tpl82
-rw-r--r--view/tpl/smarty3/admin_summary.tpl40
-rw-r--r--view/tpl/smarty3/admin_users.tpl89
-rw-r--r--view/tpl/smarty3/album_edit.tpl15
-rw-r--r--view/tpl/smarty3/api_config_xml.tpl66
-rw-r--r--view/tpl/smarty3/api_friends_xml.tpl5
-rw-r--r--view/tpl/smarty3/api_ratelimit_xml.tpl6
-rw-r--r--view/tpl/smarty3/api_status_xml.tpl46
-rw-r--r--view/tpl/smarty3/api_test_xml.tpl1
-rw-r--r--view/tpl/smarty3/api_timeline_atom.tpl90
-rw-r--r--view/tpl/smarty3/api_timeline_rss.tpl26
-rw-r--r--view/tpl/smarty3/api_timeline_xml.tpl20
-rw-r--r--view/tpl/smarty3/api_user_xml.tpl46
-rw-r--r--view/tpl/smarty3/apps.tpl7
-rw-r--r--view/tpl/smarty3/atom_feed.tpl29
-rw-r--r--view/tpl/smarty3/atom_feed_dfrn.tpl29
-rw-r--r--view/tpl/smarty3/atom_mail.tpl17
-rw-r--r--view/tpl/smarty3/atom_suggest.tpl11
-rw-r--r--view/tpl/smarty3/auto_request.tpl37
-rw-r--r--view/tpl/smarty3/birthdays_reminder.tpl10
-rw-r--r--view/tpl/smarty3/categories_widget.tpl12
-rw-r--r--view/tpl/smarty3/channel.tpl12
-rw-r--r--view/tpl/smarty3/channels.tpl22
-rw-r--r--view/tpl/smarty3/comment_item.tpl68
-rw-r--r--view/tpl/smarty3/common_friends.tpl12
-rw-r--r--view/tpl/smarty3/common_tabs.tpl5
-rw-r--r--view/tpl/smarty3/contact_block.tpl12
-rw-r--r--view/tpl/smarty3/contact_edit.tpl89
-rw-r--r--view/tpl/smarty3/contact_head.tpl30
-rw-r--r--view/tpl/smarty3/contact_slider.tpl4
-rw-r--r--view/tpl/smarty3/contact_template.tpl17
-rw-r--r--view/tpl/smarty3/contacts-template.tpl26
-rw-r--r--view/tpl/smarty3/content.tpl2
-rw-r--r--view/tpl/smarty3/conv.tpl17
-rw-r--r--view/tpl/smarty3/conv_frame.tpl11
-rw-r--r--view/tpl/smarty3/conv_item.tpl121
-rw-r--r--view/tpl/smarty3/conversation.tpl28
-rw-r--r--view/tpl/smarty3/crepair.tpl46
-rw-r--r--view/tpl/smarty3/cropbody.tpl58
-rw-r--r--view/tpl/smarty3/crophead.tpl4
-rw-r--r--view/tpl/smarty3/delegate.tpl57
-rw-r--r--view/tpl/smarty3/dfrn_req_confirm.tpl21
-rw-r--r--view/tpl/smarty3/dfrn_request.tpl59
-rw-r--r--view/tpl/smarty3/diasp_dec_hdr.tpl8
-rw-r--r--view/tpl/smarty3/diaspora_comment.tpl11
-rw-r--r--view/tpl/smarty3/diaspora_comment_relay.tpl12
-rw-r--r--view/tpl/smarty3/diaspora_conversation.tpl29
-rw-r--r--view/tpl/smarty3/diaspora_like.tpl12
-rw-r--r--view/tpl/smarty3/diaspora_like_relay.tpl13
-rw-r--r--view/tpl/smarty3/diaspora_message.tpl13
-rw-r--r--view/tpl/smarty3/diaspora_photo.tpl13
-rw-r--r--view/tpl/smarty3/diaspora_post.tpl11
-rw-r--r--view/tpl/smarty3/diaspora_profile.tpl16
-rw-r--r--view/tpl/smarty3/diaspora_relay_retraction.tpl10
-rw-r--r--view/tpl/smarty3/diaspora_relayable_retraction.tpl11
-rw-r--r--view/tpl/smarty3/diaspora_retract.tpl9
-rw-r--r--view/tpl/smarty3/diaspora_share.tpl8
-rw-r--r--view/tpl/smarty3/diaspora_signed_retract.tpl10
-rw-r--r--view/tpl/smarty3/diaspora_vcard.tpl57
-rw-r--r--view/tpl/smarty3/directory_header.tpl16
-rw-r--r--view/tpl/smarty3/directory_item.tpl11
-rw-r--r--view/tpl/smarty3/display-head.tpl8
-rw-r--r--view/tpl/smarty3/email_notify_html.tpl27
-rw-r--r--view/tpl/smarty3/email_notify_text.tpl13
-rw-r--r--view/tpl/smarty3/event.tpl10
-rw-r--r--view/tpl/smarty3/event_form.tpl49
-rw-r--r--view/tpl/smarty3/event_head.tpl139
-rw-r--r--view/tpl/smarty3/events-js.tpl6
-rw-r--r--view/tpl/smarty3/events.tpl24
-rw-r--r--view/tpl/smarty3/events_reminder.tpl10
-rw-r--r--view/tpl/smarty3/failed_updates.tpl17
-rw-r--r--view/tpl/smarty3/fake_feed.tpl13
-rw-r--r--view/tpl/smarty3/field.tpl4
-rw-r--r--view/tpl/smarty3/field_acheckbox.tpl7
-rw-r--r--view/tpl/smarty3/field_checkbox.tpl6
-rw-r--r--view/tpl/smarty3/field_combobox.tpl18
-rw-r--r--view/tpl/smarty3/field_custom.tpl6
-rw-r--r--view/tpl/smarty3/field_input.tpl7
-rw-r--r--view/tpl/smarty3/field_intcheckbox.tpl6
-rw-r--r--view/tpl/smarty3/field_openid.tpl6
-rw-r--r--view/tpl/smarty3/field_password.tpl6
-rw-r--r--view/tpl/smarty3/field_radio.tpl6
-rw-r--r--view/tpl/smarty3/field_richtext.tpl6
-rw-r--r--view/tpl/smarty3/field_select.tpl8
-rw-r--r--view/tpl/smarty3/field_select_raw.tpl8
-rw-r--r--view/tpl/smarty3/field_textarea.tpl6
-rw-r--r--view/tpl/smarty3/field_themeselect.tpl9
-rw-r--r--view/tpl/smarty3/field_yesno.tpl13
-rw-r--r--view/tpl/smarty3/fileas_widget.tpl12
-rw-r--r--view/tpl/smarty3/filebrowser.tpl84
-rw-r--r--view/tpl/smarty3/filer_dialog.tpl4
-rw-r--r--view/tpl/smarty3/follow.tpl8
-rw-r--r--view/tpl/smarty3/follow_slap.tpl25
-rw-r--r--view/tpl/smarty3/generic_links_widget.tpl11
-rw-r--r--view/tpl/smarty3/group_drop.tpl9
-rw-r--r--view/tpl/smarty3/group_edit.tpl23
-rw-r--r--view/tpl/smarty3/group_selection.tpl8
-rw-r--r--view/tpl/smarty3/group_side.tpl33
-rw-r--r--view/tpl/smarty3/groupeditor.tpl16
-rw-r--r--view/tpl/smarty3/head.tpl30
-rw-r--r--view/tpl/smarty3/hide_comments.tpl4
-rw-r--r--view/tpl/smarty3/install.tpl10
-rw-r--r--view/tpl/smarty3/install_checks.tpl24
-rw-r--r--view/tpl/smarty3/install_db.tpl30
-rw-r--r--view/tpl/smarty3/install_settings.tpl27
-rw-r--r--view/tpl/smarty3/intros.tpl28
-rw-r--r--view/tpl/smarty3/invite.tpl27
-rw-r--r--view/tpl/smarty3/jot-header.tpl318
-rw-r--r--view/tpl/smarty3/jot.tpl86
-rw-r--r--view/tpl/smarty3/jot_geotag.tpl8
-rw-r--r--view/tpl/smarty3/js_strings.tpl34
-rw-r--r--view/tpl/smarty3/lang_selector.tpl10
-rw-r--r--view/tpl/smarty3/like_noshare.tpl5
-rw-r--r--view/tpl/smarty3/login.tpl29
-rw-r--r--view/tpl/smarty3/logout.tpl6
-rw-r--r--view/tpl/smarty3/lostpass.tpl18
-rw-r--r--view/tpl/smarty3/magicsig.tpl9
-rw-r--r--view/tpl/smarty3/mail_conv.tpl14
-rw-r--r--view/tpl/smarty3/mail_display.tpl10
-rw-r--r--view/tpl/smarty3/mail_head.tpl3
-rw-r--r--view/tpl/smarty3/mail_list.tpl16
-rw-r--r--view/tpl/smarty3/main_slider.tpl23
-rw-r--r--view/tpl/smarty3/match.tpl16
-rw-r--r--view/tpl/smarty3/message_side.tpl10
-rw-r--r--view/tpl/smarty3/moderated_comment.tpl34
-rw-r--r--view/tpl/smarty3/mood_content.tpl20
-rw-r--r--view/tpl/smarty3/msg-header.tpl97
-rw-r--r--view/tpl/smarty3/nav.tpl109
-rw-r--r--view/tpl/smarty3/netfriend.tpl14
-rw-r--r--view/tpl/smarty3/nets.tpl10
-rw-r--r--view/tpl/smarty3/new_channel.tpl29
-rw-r--r--view/tpl/smarty3/nogroup-template.tpl12
-rw-r--r--view/tpl/smarty3/notifications.tpl8
-rw-r--r--view/tpl/smarty3/notifications_comments_item.tpl3
-rw-r--r--view/tpl/smarty3/notifications_dislikes_item.tpl3
-rw-r--r--view/tpl/smarty3/notifications_friends_item.tpl3
-rw-r--r--view/tpl/smarty3/notifications_likes_item.tpl3
-rw-r--r--view/tpl/smarty3/notifications_network_item.tpl3
-rw-r--r--view/tpl/smarty3/notifications_posts_item.tpl3
-rw-r--r--view/tpl/smarty3/notify.tpl3
-rw-r--r--view/tpl/smarty3/oauth_authorize.tpl10
-rw-r--r--view/tpl/smarty3/oauth_authorize_done.tpl4
-rw-r--r--view/tpl/smarty3/oembed_video.tpl4
-rw-r--r--view/tpl/smarty3/oexchange_xrd.tpl33
-rw-r--r--view/tpl/smarty3/opensearch.tpl13
-rw-r--r--view/tpl/smarty3/pagetypes.tpl5
-rw-r--r--view/tpl/smarty3/peoplefind.tpl14
-rw-r--r--view/tpl/smarty3/photo_album.tpl7
-rw-r--r--view/tpl/smarty3/photo_drop.tpl4
-rw-r--r--view/tpl/smarty3/photo_edit.tpl50
-rw-r--r--view/tpl/smarty3/photo_item.tpl22
-rw-r--r--view/tpl/smarty3/photo_top.tpl8
-rw-r--r--view/tpl/smarty3/photo_view.tpl37
-rw-r--r--view/tpl/smarty3/photos_recent.tpl11
-rw-r--r--view/tpl/smarty3/photos_upload.tpl46
-rw-r--r--view/tpl/smarty3/poco_entry_xml.tpl7
-rw-r--r--view/tpl/smarty3/poco_xml.tpl18
-rw-r--r--view/tpl/smarty3/poke_content.tpl32
-rw-r--r--view/tpl/smarty3/posted_date_widget.tpl9
-rw-r--r--view/tpl/smarty3/profed_head.tpl36
-rw-r--r--view/tpl/smarty3/profile-hide-friends.tpl16
-rw-r--r--view/tpl/smarty3/profile-hide-wall.tpl16
-rw-r--r--view/tpl/smarty3/profile-in-directory.tpl16
-rw-r--r--view/tpl/smarty3/profile-in-netdir.tpl16
-rw-r--r--view/tpl/smarty3/profile_advanced.tpl170
-rw-r--r--view/tpl/smarty3/profile_edit.tpl317
-rw-r--r--view/tpl/smarty3/profile_edlink.tpl2
-rw-r--r--view/tpl/smarty3/profile_entry.tpl11
-rw-r--r--view/tpl/smarty3/profile_listing_header.tpl8
-rw-r--r--view/tpl/smarty3/profile_photo.tpl26
-rw-r--r--view/tpl/smarty3/profile_publish.tpl16
-rw-r--r--view/tpl/smarty3/profile_vcard.tpl48
-rw-r--r--view/tpl/smarty3/prv_message.tpl33
-rw-r--r--view/tpl/smarty3/pwdreset.tpl17
-rw-r--r--view/tpl/smarty3/register.tpl45
-rw-r--r--view/tpl/smarty3/remote_friends_common.tpl21
-rw-r--r--view/tpl/smarty3/removeme.tpl20
-rw-r--r--view/tpl/smarty3/saved_searches_aside.tpl14
-rw-r--r--view/tpl/smarty3/search_item.tpl62
-rw-r--r--view/tpl/smarty3/settings.tpl134
-rw-r--r--view/tpl/smarty3/settings_account.tpl28
-rw-r--r--view/tpl/smarty3/settings_addons.tpl10
-rw-r--r--view/tpl/smarty3/settings_connectors.tpl9
-rw-r--r--view/tpl/smarty3/settings_display.tpl22
-rw-r--r--view/tpl/smarty3/settings_features.tpl16
-rw-r--r--view/tpl/smarty3/settings_nick_set.tpl5
-rw-r--r--view/tpl/smarty3/settings_nick_subdir.tpl6
-rw-r--r--view/tpl/smarty3/settings_oauth.tpl31
-rw-r--r--view/tpl/smarty3/settings_oauth_edit.tpl17
-rw-r--r--view/tpl/smarty3/suggest_friends.tpl16
-rw-r--r--view/tpl/smarty3/suggestions.tpl21
-rw-r--r--view/tpl/smarty3/tag_slap.tpl30
-rw-r--r--view/tpl/smarty3/threaded_conversation.tpl13
-rw-r--r--view/tpl/smarty3/viewcontact_template.tpl9
-rw-r--r--view/tpl/smarty3/wall_item.tpl79
-rw-r--r--view/tpl/smarty3/wall_thread.tpl120
-rw-r--r--view/tpl/smarty3/wallmessage.tpl32
-rw-r--r--view/tpl/smarty3/wallmsg-header.tpl82
-rw-r--r--view/tpl/smarty3/wallwall_item.tpl86
-rw-r--r--view/tpl/smarty3/wallwall_thread.tpl107
-rw-r--r--view/tpl/smarty3/xchan_vcard.tpl4
-rw-r--r--view/tpl/smarty3/xrd_diaspora.tpl3
-rw-r--r--view/tpl/smarty3/xrd_host.tpl18
-rw-r--r--view/tpl/smarty3/xrd_person.tpl29
-rw-r--r--view/tpl/threaded_conversation.tpl6
-rw-r--r--view/tpl/wall_thread.tpl4
250 files changed, 6959 insertions, 282 deletions
diff --git a/boot.php b/boot.php
index c122ba075..e3c493571 100644
--- a/boot.php
+++ b/boot.php
@@ -488,17 +488,36 @@ if(! class_exists('App')) {
// Allow themes to control internal parameters
// by changing App values in theme.php
- //
- // Possibly should make these part of the plugin
- // system, but it seems like overkill to invoke
- // all the plugin machinery just to change a couple
- // of values
+
public $sourcename = '';
public $videowidth = 425;
public $videoheight = 350;
public $force_max_items = 0;
public $theme_thread_allow = true;
+ // An array for all theme-controllable parameters
+ // Mostly unimplemented yet. Only options 'template_engine' and
+ // beyond are used.
+
+ private $theme = array(
+ 'sourcename' => '',
+ 'videowidth' => 425,
+ 'videoheight' => 350,
+ 'force_max_items' => 0,
+ 'thread_allow' => true,
+ 'stylesheet' => '',
+ 'template_engine' => 'internal',
+ );
+
+ private $ldelim = array(
+ 'internal' => '',
+ 'smarty3' => '{{'
+ );
+ private $rdelim = array(
+ 'internal' => '',
+ 'smarty3' => '}}'
+ );
+
private $scheme;
private $hostname;
private $baseurl;
@@ -753,9 +772,29 @@ if(! class_exists('App')) {
}
- function init_pagehead() {
- $this->page['title'] = $this->config['sitename'];
- $this->page['htmlhead'] = get_markup_template('head.tpl');
+ function build_pagehead() {
+
+ $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000);
+ if($interval < 10000)
+ $interval = 40000;
+
+ $this->page['title'] = $this->config['system']['sitename'];
+
+
+ /* put the head template at the beginning of page['htmlhead']
+ * since the code added by the modules frequently depends on it
+ * being first
+ */
+ $tpl = get_markup_template('head.tpl');
+ $this->page['htmlhead'] = replace_macros($tpl, array(
+ '$baseurl' => $a->get_baseurl(),
+ '$local_user' => local_user(),
+ '$generator' => FRIENDICA_PLATFORM . ' ' . FRIENDICA_VERSION,
+ '$update_interval' => $interval,
+ '$head_css' => head_get_css(),
+ '$head_js' => head_get_js(),
+ '$js_strings' => js_strings()
+ )) . $this->page['htmlhead'];
}
function set_curl_code($code) {
@@ -797,6 +836,32 @@ if(! class_exists('App')) {
return $this->cached_profile_image[$avatar_image];
}
+ function get_template_engine() {
+ return $this->theme['template_engine'];
+ }
+
+ function set_template_engine($engine = 'internal') {
+
+ $this->theme['template_engine'] = 'internal';
+
+ switch($engine) {
+ case 'smarty3':
+ if(is_writable('view/tpl/smarty3/'))
+ $this->theme['template_engine'] = 'smarty3';
+ break;
+ default:
+ break;
+ }
+ }
+
+ function get_template_ldelim($engine = 'internal') {
+ return $this->ldelim[$engine];
+ }
+
+ function get_template_rdelim($engine = 'internal') {
+ return $this->rdelim[$engine];
+ }
+
}
}
@@ -1264,20 +1329,26 @@ function profile_load(&$a, $nickname, $profile = 0) {
$_SESSION['theme'] = $a->profile['channel_theme'];
- /**
- * load/reload current theme info
- */
-
- $theme_info_file = "view/theme/".current_theme()."/php/theme.php";
- if (file_exists($theme_info_file)){
- require_once($theme_info_file);
- }
+ /**
+ * load/reload current theme info
+ */
- $block = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
+ $a->set_template_engine(); // reset the template engine to the default in case the user's theme doesn't specify one
- $a->set_widget('profile',profile_sidebar($a->profile, $block));
- return;
+ $theme_info_file = "view/theme/".current_theme()."/php/theme.php";
+ if (file_exists($theme_info_file)){
+ require_once($theme_info_file);
}
+
+ return;
+}}
+
+function profile_aside(&$a) {
+
+ $block = (((get_config('system','block_public')) && (! local_user()) && (! remote_user())) ? true : false);
+
+ $a->set_widget('profile',profile_sidebar($a->profile, $block));
+ return;
}
@@ -1969,23 +2040,7 @@ function construct_page(&$a) {
head_add_js('mod_' . $a->module . '.js');
-
- $interval = ((local_user()) ? get_pconfig(local_user(),'system','update_interval') : 40000);
- if($interval < 10000)
- $interval = 40000;
-
- $a->page['title'] = $a->config['system']['sitename'];
-
-
- $a->page['htmlhead'] = replace_macros($a->page['htmlhead'], array(
- '$baseurl' => $a->get_baseurl(),
- '$local_user' => local_user(),
- '$generator' => FRIENDICA_PLATFORM . ' ' . FRIENDICA_VERSION,
- '$update_interval' => $interval,
- '$head_css' => head_get_css(),
- '$head_js' => head_get_js(),
- '$js_strings' => js_strings()
- ));
+ $a->build_pagehead();
$arr = $a->get_widgets();
if(count($arr)) {
@@ -2022,4 +2077,4 @@ function construct_page(&$a) {
);
return;
-} \ No newline at end of file
+}
diff --git a/include/ItemObject.php b/include/ItemObject.php
index 45ea6860a..8ae13e0d8 100644
--- a/include/ItemObject.php
+++ b/include/ItemObject.php
@@ -204,13 +204,28 @@ class Item extends BaseObject {
$body = prepare_body($item,true);
+ if($a->theme['template_engine'] === 'internal') {
+ $body_e = template_escape($body);
+ $name_e = template_escape($profile_name);
+ $title_e = template_escape($item['title']);
+ $location_e = template_escape($location);
+ $owner_name_e = template_escape($this->get_owner_name());
+ }
+ else {
+ $body_e = $body;
+ $name_e = $profile_name;
+ $title_e = $item['title'];
+ $location_e = $location;
+ $owner_name_e = $this->get_owner_name();
+ }
+
$tmp_item = array(
'template' => $this->get_template(),
'type' => implode("",array_slice(explode("/",$item['verb']),-1)),
'tags' => $tags,
- 'body' => $body,
- 'text' => strip_tags(template_escape($body)),
+ 'body' => $body_e,
+ 'text' => strip_tags($body_e),
'id' => $this->get_id(),
'linktitle' => sprintf( t('View %s\'s profile @ %s'), $profile_name, ((strlen($item['author-link'])) ? $item['author-link'] : $item['url'])),
'olinktitle' => sprintf( t('View %s\'s profile @ %s'), $this->get_owner_name(), ((strlen($item['owner-link'])) ? $item['owner-link'] : $item['url'])),
@@ -219,19 +234,19 @@ class Item extends BaseObject {
'vwall' => t('via Wall-To-Wall:'),
'profile_url' => $profile_link,
'item_photo_menu' => item_photo_menu($item),
- 'name' => template_escape($profile_name),
+ 'name' => $name_e,
'thumb' => $profile_avatar,
'osparkle' => $osparkle,
'sparkle' => $sparkle,
- 'title' => template_escape($item['title']),
+ 'title' => $title_e,
'localtime' => datetime_convert('UTC', date_default_timezone_get(), $item['created'], 'r'),
'ago' => (($item['app']) ? sprintf( t('%s from %s'),relative_date($item['created']),$item['app']) : relative_date($item['created'])),
'lock' => $lock,
- 'location' => template_escape($location),
+ 'location' => $location_e,
'indent' => $indent,
'owner_url' => $this->get_owner_url(),
'owner_photo' => $this->get_owner_photo(),
- 'owner_name' => template_escape($this->get_owner_name()),
+ 'owner_name' => $owner_name_e,
// Item toolbar buttons
'like' => $like,
diff --git a/include/conversation.php b/include/conversation.php
index 7ad231b58..ecd6d358e 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -344,7 +344,6 @@ function visible_activity($item) {
return true;
}
-
/**
* "Render" a conversation or list of items for HTML display.
* There are two major forms of display:
@@ -886,7 +885,7 @@ function status_editor($a,$x,$popup=false) {
$o = '';
- $geotag = (($x['allow_location']) ? get_markup_template('jot_geotag.tpl') : '');
+ $geotag = (($x['allow_location']) ? replace_macros(get_markup_template('jot_geotag.tpl'), array()) : '');
$plaintext = true;
if(feature_enabled(local_user(),'richtext'))
diff --git a/include/features.php b/include/features.php
index 738de429f..e4781518b 100644
--- a/include/features.php
+++ b/include/features.php
@@ -58,4 +58,4 @@ function get_features() {
call_hooks('get_features',$arr);
return $arr;
-} \ No newline at end of file
+}
diff --git a/include/friendica_smarty.php b/include/friendica_smarty.php
new file mode 100644
index 000000000..b3f0d18a0
--- /dev/null
+++ b/include/friendica_smarty.php
@@ -0,0 +1,43 @@
+<?php
+
+require_once("library/Smarty/libs/Smarty.class.php");
+
+class FriendicaSmarty extends Smarty {
+
+ public $filename;
+
+ function __construct() {
+ parent::__construct();
+
+ $a = get_app();
+ $theme = current_theme();
+
+ // setTemplateDir can be set to an array, which Smarty will parse in order.
+ // The order is thus very important here
+ $template_dirs = array('theme' => "view/theme/$theme/smarty3/");
+ if( x($a->theme_info,"extends") )
+ $template_dirs = $template_dirs + array('extends' => "view/theme/".$a->theme_info["extends"]."/smarty3/");
+ $template_dirs = $template_dirs + array('base' => 'view/smarty3/');
+ $this->setTemplateDir($template_dirs);
+
+ $this->setCompileDir('view/smarty3/compiled/');
+ $this->setConfigDir('view/smarty3/config/');
+ $this->setCacheDir('view/smarty3/cache/');
+
+ $this->left_delimiter = $a->get_template_ldelim('smarty3');
+ $this->right_delimiter = $a->get_template_rdelim('smarty3');
+
+ // Don't report errors so verbosely
+ $this->error_reporting = E_ALL & ~E_NOTICE;
+ }
+
+ function parsed($template = '') {
+ if($template) {
+ return $this->fetch('string:' . $template);
+ }
+ return $this->fetch('file:' . $this->filename);
+ }
+}
+
+
+
diff --git a/include/plugin.php b/include/plugin.php
index 6a35a6187..be238b78c 100644
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -465,37 +465,40 @@ function format_js_if_exists($source) {
}
-function theme_include($file) {
+function theme_include($file, $root = '') {
- global $t; // use builtin template processor
+ $a = get_app();
- $paths = array(
- 'view/theme/$theme/$ext/$file',
- 'view/theme/$theme/$file',
- 'view/theme/$parent/$ext/$file',
- 'view/theme/$parent/$file',
- 'view/$ext/$file',
- 'view/$file'
- );
+ // Make sure $root ends with a slash / if it's not blank
+ if($root !== '' && $root[strlen($root)-1] !== '/')
+ $root = $root . '/';
- $theme_info = get_app()->theme_info;
+ $theme_info = $a->theme_info;
if(array_key_exists('extends',$theme_info))
$parent = $theme_info['extends'];
else
$parent = 'NOPATH';
+ $theme = current_theme();
+
+ $ext = substr($file,strrpos($file,'.')+1);
+
+ $paths = array(
+ "{$root}view/theme/$theme/$ext/$file",
+ "{$root}view/theme/$theme/$file",
+ "{$root}view/theme/$parent/$ext/$file",
+ "{$root}view/theme/$parent/$file",
+ "{$root}view/$ext/$file",
+ "{$root}view/$file"
+ );
+
foreach($paths as $p) {
- $f = $t->replace($p,array(
- '$theme' => current_theme(),
- '$ext' => substr($file,strrpos($file,'.')+1),
- '$parent' => $parent,
- '$file' => $file
- ));
- if(strstr($f,'NOPATH'))
+ // strpos() is faster than strstr when checking if one string is in another (http://php.net/manual/en/function.strstr.php)
+ if(strpos($p,'NOPATH') !== false)
continue;
- if(file_exists($f))
- return $f;
+ if(file_exists($p))
+ return $p;
}
return '';
}
@@ -509,19 +512,38 @@ function get_intltext_template($s) {
if(! isset($a->language))
$a->language = 'en';
- if(file_exists("view/{$a->language}/$s"))
- return file_get_contents("view/{$a->language}/$s");
- elseif(file_exists("view/en/$s"))
- return file_get_contents("view/en/$s");
+ $engine = '';
+ if($a->get_template_engine() === 'smarty3')
+ $engine = "/smarty3";
+
+ if(file_exists("view/{$a->language}$engine/$s"))
+ return file_get_contents("view/{$a->language}$engine/$s");
+ elseif(file_exists("view/en$engine/$s"))
+ return file_get_contents("view/en$engine/$s");
else
- return file_get_contents("view/$s");
+ return file_get_contents("view/tpl/$engine/$s");
}}
if(! function_exists('get_markup_template')) {
-function get_markup_template($s) {
+function get_markup_template($s, $root = '') {
+
+ $a = get_app();
+
+ $template_eng = $a->get_template_engine();
+ if($template_eng === 'internal') {
+ $template_file = theme_include($s, $root);
+ if($template_file)
+ return file_get_contents($template_file);
+ }
+ else {
+ $template_file = theme_include("$template_eng/$s", $root);
- $x = theme_include($s);
- if($x)
- return file_get_contents($x);
+ if($template_file) {
+ $template = new FriendicaSmarty();
+ $template->filename = $template_file;
+
+ return $template;
+ }
+ }
}}
diff --git a/include/text.php b/include/text.php
index 5438aae73..83d989947 100644
--- a/include/text.php
+++ b/include/text.php
@@ -13,15 +13,32 @@ require_once("include/template_processor.php");
if(! function_exists('replace_macros')) {
function replace_macros($s,$r) {
global $t;
-
- //$ts = microtime();
- $r = $t->replace($s,$r);
- //$tt = microtime() - $ts;
-
- //$a = get_app();
- //$a->page['debug'] .= "$tt <br>\n";
- return template_unescape($r);
+// $ts = microtime();
+ $a = get_app();
+
+ if($a->get_template_engine() === 'smarty3') {
+ $template = '';
+ if(gettype($s) === 'string') {
+ $template = $s;
+ $s = new FriendicaSmarty();
+ }
+ foreach($r as $key=>$value) {
+ if($key[0] === '$') {
+ $key = substr($key, 1);
+ }
+ $s->assign($key, $value);
+ }
+ $output = $s->parsed($template);
+ }
+ else {
+ $r = $t->replace($s,$r);
+
+ $output = template_unescape($r);
+ }
+// $tt = microtime() - $ts;
+// $a->page['debug'] .= "$tt <br>\n";
+ return $output;
}}
diff --git a/index.php b/index.php
index d5739f39e..cc6249256 100644
--- a/index.php
+++ b/index.php
@@ -96,13 +96,6 @@ if((x($_GET,'zid')) && (! $install)) {
if((x($_SESSION,'authenticated')) || (x($_POST,'auth-params')) || ($a->module === 'login'))
require("auth.php");
-/*
- * Create the page head after setting the language
- * and getting any auth credentials
- */
-
-$a->init_pagehead();
-
if(! x($_SESSION,'sysmsg'))
$_SESSION['sysmsg'] = array();
@@ -280,18 +273,28 @@ if($a->module_loaded) {
if(! $a->error) {
+ // If a theme has defined an _aside() function, run that first
+ //
+ // If the theme function doesn't exist, see if this theme extends another,
+ // and see if that other theme has an _aside() function--if it does, run it
+ //
+ // If $aside_default is not False after the theme _aside() function, run the
+ // module's _aside() function too
+ //
+ // This gives themes more control over how the left sidebar looks
+
$aside_default = true;
call_hooks($a->module . '_mod_aside',$placeholder);
if(function_exists(str_replace('-','_',current_theme()) . '_' . $a->module . '_aside')) {
$func = str_replace('-','_',current_theme()) . '_' . $a->module . '_aside';
$aside_default = $func($a);
}
- elseif(x($a->theme_info,"extends") && $aside_default
+ elseif($aside_default && x($a->theme_info,"extends")
&& (function_exists(str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside'))) {
$func = str_replace('-','_',$a->theme_info["extends"]) . '_' . $a->module . '_aside';
$aside_default = $func($a);
}
- elseif(function_exists($a->module . '_aside') && $aside_default) {
+ if($aside_default && function_exists($a->module . '_aside')) {
$func = $a->module . '_aside';
$func($a);
}
@@ -329,7 +332,6 @@ if(stristr( implode("",$_SESSION['sysmsg']), t('Permission denied'))) {
call_hooks('page_end', $a->page['content']);
-
construct_page($a);
session_write_close();
diff --git a/mod/admin.php b/mod/admin.php
index d0c904b02..13ecf7eef 100644
--- a/mod/admin.php
+++ b/mod/admin.php
@@ -610,7 +610,7 @@ function admin_page_users(&$a){
t('Community/Celebrity Account'),
t('Automatic Friend Account')
);
- $e['page-flags'] = $accounts[$e['page-flags']];
+ $e['page_flags'] = $accounts[$e['page-flags']];
$e['register_date'] = relative_date($e['register_date']);
$e['login_date'] = relative_date($e['login_date']);
$e['lastitem_date'] = relative_date($e['lastitem_date']);
diff --git a/mod/channel.php b/mod/channel.php
index 8729fee2d..096c76ae2 100644
--- a/mod/channel.php
+++ b/mod/channel.php
@@ -2,16 +2,6 @@
function channel_init(&$a) {
- $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
-
-}
-
-
-function channel_aside(&$a) {
-
- require_once('include/contact_widgets.php');
- require_once('include/items.php');
-
if(argc() > 1)
$which = argv(1);
else {
@@ -28,10 +18,24 @@ function channel_aside(&$a) {
$profile = argv(1);
}
- $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat']) : '');
+ $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
+ // Run profile_load() here to make sure the theme is set before
+ // we start loading content
profile_load($a,$which,$profile);
+}
+
+
+function channel_aside(&$a) {
+
+ require_once('include/contact_widgets.php');
+ require_once('include/items.php');
+
+ profile_aside($a);
+
+ $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat']) : '');
+
$a->set_widget('archive',posted_date_widget($a->get_baseurl(true) . '/channel/' . $a->profile['nickname'],$a->profile['profile_uid'],true));
$a->set_widget('categories',categories_widget($a->get_baseurl(true) . '/channel/' . $a->profile['nickname'],$cat));
diff --git a/mod/display.php b/mod/display.php
index c6af8fdd2..d109d9a9b 100644
--- a/mod/display.php
+++ b/mod/display.php
@@ -16,7 +16,7 @@ function display_content(&$a) {
$o = '<div id="live-display"></div>' . "\r\n";
- $a->page['htmlhead'] .= get_markup_template('display-head.tpl');
+ $a->page['htmlhead'] .= replace_macros(get_markup_template('display-head.tpl'), array());
if(argc() > 1)
@@ -60,6 +60,7 @@ function display_content(&$a) {
// $nick = (($a->argc > 1) ? $a->argv[1] : '');
// profile_load($a,$nick);
+// profile_aside($a);
// $item_id = (($a->argc > 2) ? intval($a->argv[2]) : 0);
diff --git a/mod/fbrowser.php b/mod/fbrowser.php
index cdcde4b17..81f47e39d 100644
--- a/mod/fbrowser.php
+++ b/mod/fbrowser.php
@@ -55,9 +55,17 @@ function fbrowser_content($a){
global $a;
$types = Photo::supportedTypes();
$ext = $types[$rr['type']];
+
+ if($a->theme['template_engine'] === 'internal') {
+ $filename_e = template_escape($rr['filename']);
+ }
+ else {
+ $filename_e = $rr['filename'];
+ }
+
return array(
$a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['hiq'] . '.' .$ext,
- template_escape($rr['filename']),
+ $filename_e,
$a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['loq'] . '.'. $ext
);
}
@@ -70,6 +78,7 @@ function fbrowser_content($a){
'$path' => $path,
'$folders' => $albums,
'$files' =>$files,
+ '$cancel' => t('Cancel'),
));
@@ -83,7 +92,15 @@ function fbrowser_content($a){
function files2($rr){ global $a;
list($m1,$m2) = explode("/",$rr['filetype']);
$filetype = ( (file_exists("images/icons/$m1.png"))?$m1:"zip");
- return array( $a->get_baseurl() . '/attach/' . $rr['id'], template_escape($rr['filename']), $a->get_baseurl() . '/images/icons/16/' . $filetype . '.png');
+
+ if($a->theme['template_engine'] === 'internal') {
+ $filename_e = template_escape($rr['filename']);
+ }
+ else {
+ $filename_e = $rr['filename'];
+ }
+
+ return array( $a->get_baseurl() . '/attach/' . $rr['id'], $filename_e, $a->get_baseurl() . '/images/icons/16/' . $filetype . '.png');
}
$files = array_map("files2", $files);
//echo "<pre>"; var_dump($files); killme();
@@ -96,6 +113,7 @@ function fbrowser_content($a){
'$path' => array( array($a->get_baseurl()."/fbrowser/image/", t("Files")) ),
'$folders' => false,
'$files' =>$files,
+ '$cancel' => t('Cancel'),
));
}
diff --git a/mod/hcard.php b/mod/hcard.php
index cc6d326b5..83ae7c7af 100644
--- a/mod/hcard.php
+++ b/mod/hcard.php
@@ -48,3 +48,6 @@ function hcard_init(&$a) {
}
+function hcard_aside(&$a) {
+ profile_aside($a);
+}
diff --git a/mod/hostxrd.php b/mod/hostxrd.php
index 9b2411f26..0a66dcc84 100644
--- a/mod/hostxrd.php
+++ b/mod/hostxrd.php
@@ -14,10 +14,15 @@ function hostxrd_init(&$a) {
set_config('system','site_pubkey', $res['pubkey']);
}
- $tpl = file_get_contents('view/xrd_host.tpl');
- echo str_replace(array(
- '$zhost','$zroot','$domain','$zot_post','$bigkey'),array($a->get_hostname(),z_root(),z_path(),z_root() . '/post', salmon_key(get_config('system','site_pubkey'))),$tpl);
+ $tpl = get_markup_template('xrd_host.tpl');
+ echo replace_macros($tpl, array(
+ '$zhost' => $a->get_hostname(),
+ '$zroot' => z_root(),
+ '$domain' => z_path(),
+ '$zot_post' => z_root() . '/post',
+ '$bigkey' => salmon_key(get_config('system','site_pubkey')),
+ ));
session_write_close();
exit();
-} \ No newline at end of file
+}
diff --git a/mod/message.php b/mod/message.php
index 3e88362a0..1a1ce4813 100644
--- a/mod/message.php
+++ b/mod/message.php
@@ -362,6 +362,19 @@ function message_content(&$a) {
$rr['to'] = find_xchan_in_array($rr['to_xchan'],$c);
$rr['seen'] = (($rr['mail_flags'] & MAIL_SEEN) ? 1 : "");
+ if($a->theme['template_engine'] === 'internal') {
+ $from_name_e = template_escape($rr['from']['xchan_name']);
+ $subject_e = template_escape((($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>'));
+ $body_e = template_escape($rr['body']);
+ $to_name_e = template_escape($rr['to']['xchan_name']);
+ }
+ else {
+ $from_name_e = $rr['from']['xchan_name'];
+ $subject_e = (($rr['seen']) ? $rr['title'] : '<strong>' . $rr['title'] . '</strong>');
+ $body_e = $rr['body'];
+ $to_name_e = $rr['to']['xchan_name'];
+ }
+
$o .= replace_macros($tpl, array(
'$id' => $rr['id'],
'$from_name' => template_escape($rr['from']['xchan_name']),
@@ -385,6 +398,10 @@ function message_content(&$a) {
$o .= $header;
+ $plaintext = true;
+ if( local_user() && feature_enabled(local_user(),'richtext') )
+ $plaintext = false;
+
$r = q("SELECT parent_uri from mail WHERE channel_id = %d and id = %d limit 1",
intval(local_user()),
intval(argv(1))
@@ -433,6 +450,8 @@ function message_content(&$a) {
$a->page['htmlhead'] .= replace_macros($tpl, array(
'$nickname' => $channel['channel_addr'],
'$baseurl' => $a->get_baseurl(true)
+ '$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
+ '$linkurl' => t('Please enter a link URL:')
));
@@ -451,16 +470,29 @@ logger('message: ' . print_r($message,true));
// if($extracted['images'])
// $message['body'] = item_redir_and_replace_images($extracted['body'], $extracted['images'], $message['contact-id']);
+ if($a->theme['template_engine'] === 'internal') {
+ $from_name_e = template_escape($message['from']['xchan_name']);
+ $subject_e = template_escape($message['title']);
+ $body_e = template_escape(smilies(bbcode($message['body'])));
+ $to_name_e = template_escape($message['to']['xchan_name']);
+ }
+ else {
+ $from_name_e = $message['from']['xchan_name'];
+ $subject_e = $message['title'];
+ $body_e = smilies(bbcode($message['body']));
+ $to_name_e = $message['to']['xchan_name'];
+ }
+
$mails[] = array(
'id' => $message['id'],
- 'from_name' => template_escape($message['from']['xchan_name']),
+ 'from_name' => $from_name_e,
'from_url' => z_root() . '/chanview/?f=&hash=' . $message['from_xchan'],
'from_photo' => $message['from']['xchan_photo_m'],
- 'to_name' => template_escape($message['to']['xchan_name']),
+ 'to_name' => $to_name_e,
'to_url' => z_root() . '/chanview/?f=&hash=' . $message['to_xchan'],
'to_photo' => $message['to']['xchan_photo_m'],
- 'subject' => template_escape($message['title']),
- 'body' => template_escape(smilies(bbcode($message['body']))),
+ 'subject' => $subject_e,
+ 'body' => $body_e,
'delete' => t('Delete message'),
'date' => datetime_convert('UTC',date_default_timezone_get(),$message['created'],'D, d M Y - g:i A'),
);
@@ -476,6 +508,13 @@ logger('message: ' . print_r($message,true));
$select = $message[$recp]['xchan_name'] . '<input type="hidden" name="messageto" value="' . $message[$recp]['xchan_hash'] . '" />';
$parent = '<input type="hidden" name="replyto" value="' . $message['parent_uri'] . '" />';
+ if($a->theme['template_engine'] === 'internal') {
+ $subjtxt_e = template_escape($message['title']);
+ }
+ else {
+ $subjtxt_e = $message['title'];
+ }
+
$tpl = get_markup_template('mail_display.tpl');
$o = replace_macros($tpl, array(
'$thread_id' => $a->argv[1],
@@ -491,7 +530,7 @@ logger('message: ' . print_r($message,true));
'$to' => t('To:'),
'$showinputs' => '',
'$subject' => t('Subject:'),
- '$subjtxt' => template_escape($message['title']),
+ '$subjtxt' => $subjtxt_e,
'$readonly' => ' readonly="readonly" style="background: #BBBBBB;" ',
'$yourmessage' => t('Your message:'),
'$text' => '',
diff --git a/mod/photos.php b/mod/photos.php
index ee0a930fd..2cd2646d5 100644
--- a/mod/photos.php
+++ b/mod/photos.php
@@ -1063,6 +1063,15 @@ function photos_content(&$a) {
}
+ if($a->theme['template_engine'] === 'internal') {
+ $albumselect_e = template_escape($albumselect);
+ $aclselect_e = (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb)));
+ }
+ else {
+ $albumselect_e = $albumselect;
+ $aclselect_e = (($visitor) ? '' : populate_acl($a->user, $celeb));
+ }
+
$tpl = get_markup_template('photos_upload.tpl');
$o .= replace_macros($tpl,array(
'$pagename' => t('Upload Photos'),
@@ -1072,9 +1081,9 @@ function photos_content(&$a) {
'$newalbum' => t('New album name: '),
'$existalbumtext' => t('or existing album name: '),
'$nosharetext' => t('Do not show a status post for this upload'),
- '$albumselect' => template_escape($albumselect),
+ '$albumselect' => $albumselect_e,
'$permissions' => t('Permissions'),
- '$aclselect' => (($visitor) ? '' : template_escape(populate_acl($a->user, $celeb))),
+ '$aclselect' => $aclselect_e,
'$uploader' => $ret['addon_text'],
'$default' => (($ret['default_upload']) ? $default_upload : ''),
'$uploadurl' => $ret['post_url']
@@ -1116,11 +1125,18 @@ function photos_content(&$a) {
if($cmd === 'edit') {
if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
if($can_post) {
+ if($a->theme['template_engine'] === 'internal') {
+ $album_e = template_escape($album);
+ }
+ else {
+ $album_e = $album;
+ }
+
$edit_tpl = get_markup_template('album_edit.tpl');
$o .= replace_macros($edit_tpl,array(
'$nametext' => t('New album name: '),
'$nickname' => $a->data['channel']['channel_address'],
- '$album' => template_escape($album),
+ '$album' => $album_e,
'$hexalbum' => bin2hex($album),
'$submit' => t('Submit'),
'$dropsubmit' => t('Delete Album')
@@ -1160,6 +1176,15 @@ function photos_content(&$a) {
$ext = $phototypes[$rr['type']];
+ if($a->theme['template_engine'] === 'internal') {
+ $imgalt_e = template_escape($rr['filename']);
+ $desc_e = template_escape($rr['desc']);
+ }
+ else {
+ $imgalt_e = $rr['filename'];
+ $desc_e = $rr['desc'];
+ }
+
$o .= replace_macros($tpl,array(
'$id' => $rr['id'],
'$twist' => ' ' . $twist . rand(2,4),
@@ -1167,8 +1192,8 @@ function photos_content(&$a) {
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''),
'$phototitle' => t('View Photo'),
'$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . $rr['scale'] . '.' .$ext,
- '$imgalt' => template_escape($rr['filename']),
- '$desc'=> template_escape($rr['desc'])
+ '$imgalt' => $imgalt_e,
+ '$desc'=> $desc_e
));
}
@@ -1365,21 +1390,32 @@ function photos_content(&$a) {
$edit = Null;
if(($cmd === 'edit') && ($can_post)) {
+ if($a->theme['template_engine'] === 'internal') {
+ $album_e = template_escape($ph[0]['album']);
+ $caption_e = template_escape($ph[0]['desc']);
+ $aclselect_e = template_escape(populate_acl($ph[0]));
+ }
+ else {
+ $album_e = $ph[0]['album'];
+ $caption_e = $ph[0]['desc'];
+ $aclselect_e = populate_acl($ph[0]);
+ }
+
$edit_tpl = get_markup_template('photo_edit.tpl');
$edit = replace_macros($edit_tpl, array(
'$id' => $ph[0]['id'],
'$rotatecw' => t('Rotate CW (right)'),
'$rotateccw' => t('Rotate CCW (left)'),
- '$album' => template_escape($ph[0]['album']),
+ '$album' => $album_e,
'$newalbum' => t('New album name'),
'$nickname' => $a->data['channel']['channel_address'],
'$resource_id' => $ph[0]['resource_id'],
'$capt_label' => t('Caption'),
- '$caption' => template_escape($ph[0]['desc']),
+ '$caption' => $caption_e,
'$tag_label' => t('Add a Tag'),
'$tags' => $link_item['tag'],
'$permissions' => t('Permissions'),
- '$aclselect' => template_escape(populate_acl($ph[0])),
+ '$aclselect' => $aclselect_e,
'$help_tags' => t('Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'),
'$item_id' => ((count($linked_items)) ? $link_item['id'] : 0),
'$submit' => t('Submit'),
@@ -1516,14 +1552,25 @@ function photos_content(&$a) {
$drop = replace_macros(get_markup_template('photo_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
+ if($a->theme['template_engine'] === 'internal') {
+ $name_e = template_escape($profile_name);
+ $title_e = template_escape($item['title']);
+ $body_e = template_escape(bbcode($item['body']));
+ }
+ else {
+ $name_e = $profile_name;
+ $title_e = $item['title'];
+ $body_e = bbcode($item['body']);
+ }
+
$comments .= replace_macros($template,array(
'$id' => $item['item_id'],
'$profile_url' => $profile_link,
- '$name' => template_escape($profile_name),
+ '$name' => $name_e,
'$thumb' => $profile_avatar,
'$sparkle' => $sparkle,
- '$title' => template_escape($item['title']),
- '$body' => template_escape(bbcode($item['body'])),
+ '$title' => $title_e,
+ '$body' => $body_e,
'$ago' => relative_date($item['created']),
'$indent' => (($item['parent'] != $item['item_id']) ? ' comment' : ''),
'$drop' => $drop,
@@ -1535,21 +1582,34 @@ function photos_content(&$a) {
$paginate = paginate($a);
}
+ if($a->theme['template_engine'] === 'internal') {
+ $album_e = array($album_link,template_escape($ph[0]['album']));
+ $tags_e = template_escape($tags);
+ $like_e = template_escape($like);
+ $dislike_e = template_escape($dislike);
+ }
+ else {
+ $album_e = array($album_link,$ph[0]['album']);
+ $tags_e = $tags;
+ $like_e = $like;
+ $dislike_e = $dislike;
+ }
+
$photo_tpl = get_markup_template('photo_view.tpl');
$o .= replace_macros($photo_tpl, array(
'$id' => $ph[0]['id'],
- '$album' => array($album_link,template_escape($ph[0]['album'])),
+ '$album' => $album_e,
'$tools' => $tools,
'$lock' => $lock,
'$photo' => $photo,
'$prevlink' => $prevlink,
'$nextlink' => $nextlink,
'$desc' => $ph[0]['desc'],
- '$tags' => template_escape($tags),
+ '$tags' => $tags_e,
'$edit' => $edit,
'$likebuttons' => $likebuttons,
- '$like' => template_escape($like),
- '$dislike' => template_escape($dislike),
+ '$like' => $like_e,
+ '$dislike' => $dislike_e,
'$comments' => $comments,
'$paginate' => $paginate,
));
@@ -1593,16 +1653,25 @@ function photos_content(&$a) {
$twist = 'rotright';
$ext = $phototypes[$rr['type']];
+ if($a->theme['template_engine'] === 'internal') {
+ $alt_e = template_escape($rr['filename']);
+ $name_e = template_escape($rr['album']);
+ }
+ else {
+ $alt_e = $rr['filename'];
+ $name_e = $rr['album'];
+ }
+
$photos[] = array(
'id' => $rr['id'],
'twist' => ' ' . $twist . rand(2,4),
'link' => $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/image/' . $rr['resource_id'],
'title' => t('View Photo'),
'src' => $a->get_baseurl() . '/photo/' . $rr['resource_id'] . '-' . ((($rr['scale']) == 6) ? 4 : $rr['scale']) . '.' . $ext,
- 'alt' => template_escape($rr['filename']),
+ 'alt' => $alt_e,
'album' => array(
'link' => $a->get_baseurl() . '/photos/' . $a->data['channel']['channel_address'] . '/album/' . bin2hex($rr['album']),
- 'name' => template_escape($rr['album']),
+ 'name' => $name_e,
'alt' => t('View Album'),
),
@@ -1611,7 +1680,7 @@ function photos_content(&$a) {
}
$tpl = get_markup_template('photos_recent.tpl');
- $o .= replace_macros($tpl,array(
+ $o .= replace_macros($tpl, array(
'$title' => t('Recent Photos'),
'$can_post' => $can_post,
'$upload' => array(t('Upload New Photos'), $a->get_baseurl().'/photos/'.$a->data['channel']['channel_address'].'/upload'),
diff --git a/mod/profile.php b/mod/profile.php
index ce2d92f9b..8f15766b6 100644
--- a/mod/profile.php
+++ b/mod/profile.php
@@ -2,16 +2,6 @@
function profile_init(&$a) {
- $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
-
-}
-
-
-function profile_aside(&$a) {
-
- require_once('include/contact_widgets.php');
- require_once('include/items.php');
-
if(argc() > 1)
$which = argv(1);
else {
@@ -28,6 +18,7 @@ function profile_aside(&$a) {
$profile = argv(1);
}
+ $a->page['htmlhead'] .= '<link rel="alternate" type="application/atom+xml" href="' . $a->get_baseurl() . '/feed/' . $which .'" />' . "\r\n" ;
$x = q("select channel_id as profile_uid from channel where channel_address = '%s' limit 1",
dbesc(argv(1))
@@ -37,13 +28,33 @@ function profile_aside(&$a) {
$channel_display = get_pconfig($a->profile['profile_uid'],'system','channel_format');
if(! $channel_display)
profile_load($a,$which,$profile);
+ }
+
+}
+
+
+function profile_aside(&$a) {
+
+ require_once('include/contact_widgets.php');
+ require_once('include/items.php');
+
+ $x = q("select channel_id as profile_uid from channel where channel_address = '%s' limit 1",
+ dbesc(argv(1))
+ );
+ if($x) {
+ $channel_display = get_pconfig($a->profile['profile_uid'],'system','channel_format');
+ if(! $channel_display)
+ profile_aside($a);
+
if($channel_display === 'full')
$a->page['template'] = 'full';
else {
+ $cat = ((x($_REQUEST,'cat')) ? htmlspecialchars($_REQUEST['cat']) : '');
$a->set_widget('archive',posted_date_widget($a->get_baseurl(true) . '/channel/' . $a->profile['nickname'],$a->profile['profile_uid'],true));
$a->set_widget('categories',categories_widget($a->get_baseurl(true) . '/channel/' . $a->profile['nickname'],$cat));
}
}
+
}
diff --git a/mod/profile_photo.php b/mod/profile_photo.php
index e78d2ca6f..e7be543c6 100644
--- a/mod/profile_photo.php
+++ b/mod/profile_photo.php
@@ -14,6 +14,16 @@ function profile_photo_init(&$a) {
}
+function profile_photo_init(&$a) {
+
+ if(! local_user()) {
+ return;
+ }
+
+ profile_aside($a);
+}
+
+
function profile_photo_post(&$a) {
if(! local_user()) {
@@ -318,7 +328,7 @@ function profile_photo_crop_ui_head(&$a, $ph){
$a->config['imagecrop'] = $hash;
$a->config['imagecrop_resolution'] = $smallest;
$a->config['imagecrop_ext'] = $ph->getExt();
- $a->page['htmlhead'] .= get_markup_template("crophead.tpl");
+ $a->page['htmlhead'] .= replace_macros(get_markup_template("crophead.tpl"), array());
return;
}}
diff --git a/mod/profiles.php b/mod/profiles.php
index 37be9bd08..5b2102852 100644
--- a/mod/profiles.php
+++ b/mod/profiles.php
@@ -1,6 +1,162 @@
<?php
+function profiles_init(&$a) {
+
+ nav_set_selected('profiles');
+
+ if(! local_user()) {
+ return;
+ }
+
+ if((argc() > 2) && (argv(1) === "drop") && intval(argv(2))) {
+ $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is_default` = 0 LIMIT 1",
+ intval($a->argv[2]),
+ intval(local_user())
+ );
+ if(! count($r)) {
+ notice( t('Profile not found.') . EOL);
+ goaway($a->get_baseurl(true) . '/profiles');
+ return; // NOTREACHED
+ }
+ $profile_guid = $r['profile_guid'];
+
+ check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't');
+
+ // move every contact using this profile as their default to the user default
+
+ $r = q("UPDATE abook SET abook_profile = (SELECT profile_guid AS FROM profile WHERE is_default = 1 AND uid = %d LIMIT 1) WHERE abook_profile = '%s' AND abook_channel = %d ",
+ intval(local_user()),
+ dbesc($profile_guid),
+ intval(local_user())
+ );
+ $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval(argv(2)),
+ intval(local_user())
+ );
+ if($r)
+ info( t('Profile deleted.') . EOL);
+
+ goaway($a->get_baseurl(true) . '/profiles');
+ return; // NOTREACHED
+ }
+
+
+
+
+
+ if((argc() > 1) && (argv(1) === 'new')) {
+
+ check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't');
+
+ $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
+ intval(local_user()));
+ $num_profiles = count($r0);
+
+ $name = t('Profile-') . ($num_profiles + 1);
+
+ $r1 = q("SELECT `name`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is_default` = 1 LIMIT 1",
+ intval(local_user()));
+
+ $r2 = q("INSERT INTO `profile` (`aid`, `uid` , `profile_guid`, `profile_name` , `name`, `photo`, `thumb`)
+ VALUES ( %d, '%s', '%s', '%s', '%s' )",
+ intval(get_account_id()),
+ intval(local_user()),
+ dbesc(random_string()),
+ dbesc($name),
+ dbesc($r1[0]['name']),
+ dbesc($r1[0]['photo']),
+ dbesc($r1[0]['thumb'])
+ );
+
+ $r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile_name` = '%s' LIMIT 1",
+ intval(local_user()),
+ dbesc($name)
+ );
+
+ info( t('New profile created.') . EOL);
+ if(count($r3) == 1)
+ goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
+
+ goaway($a->get_baseurl(true) . '/profiles');
+ }
+
+ if((argc() > 2) && (argv(1) === 'clone')) {
+
+ check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't');
+
+ $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
+ intval(local_user()));
+ $num_profiles = count($r0);
+
+ $name = t('Profile-') . ($num_profiles + 1);
+ $r1 = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d LIMIT 1",
+ intval(local_user()),
+ intval($a->argv[2])
+ );
+ if(! count($r1)) {
+ notice( t('Profile unavailable to clone.') . EOL);
+ $a->error = 404;
+ return;
+ }
+ unset($r1[0]['id']);
+ $r1[0]['is_default'] = 0;
+ $r1[0]['publish'] = 0;
+ $r1[0]['profile_name'] = dbesc($name);
+ $r1[0]['profile_guid'] = dbesc(random_string());
+
+ dbesc_array($r1[0]);
+
+ $r2 = dbq("INSERT INTO `profile` (`"
+ . implode("`, `", array_keys($r1[0]))
+ . "`) VALUES ('"
+ . implode("', '", array_values($r1[0]))
+ . "')" );
+
+ $r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile_name` = '%s' LIMIT 1",
+ intval(local_user()),
+ dbesc($name)
+ );
+ info( t('New profile created.') . EOL);
+ if(count($r3) == 1)
+ goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
+
+ goaway($a->get_baseurl(true) . '/profiles');
+
+ return; // NOTREACHED
+ }
+
+
+ // Run profile_load() here to make sure the theme is set before
+ // we start loading content
+ if((argc() > 1) && (intval(argv(1)))) {
+ $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+ intval($a->argv[1]),
+ intval(local_user())
+ );
+ if(! count($r)) {
+ notice( t('Profile not found.') . EOL);
+ $a->error = 404;
+ return;
+ }
+
+ $chan = $a->get_channel();
+
+ profile_load($a,$chan['channel_address'],$r[0]['id']);
+ }
+}
+
+function profiles_aside(&$a) {
+
+ if(! local_user()) {
+ return;
+ }
+
+ if((argc() > 1) && (intval(argv(1)))) {
+ profile_aside($a);
+ }
+}
+
function profiles_post(&$a) {
if(! local_user()) {
@@ -307,130 +463,12 @@ function profiles_post(&$a) {
function profiles_content(&$a) {
$o = '';
- nav_set_selected('profiles');
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return;
}
- if((argc() > 2) && (argv(1) === "drop") && intval(argv(2))) {
- $r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d AND `is_default` = 0 LIMIT 1",
- intval($a->argv[2]),
- intval(local_user())
- );
- if(! count($r)) {
- notice( t('Profile not found.') . EOL);
- goaway($a->get_baseurl(true) . '/profiles');
- return; // NOTREACHED
- }
- $profile_guid = $r['profile_guid'];
-
- check_form_security_token_redirectOnErr('/profiles', 'profile_drop', 't');
-
- // move every contact using this profile as their default to the user default
-
- $r = q("UPDATE abook SET abook_profile = (SELECT profile_guid AS FROM profile WHERE is_default = 1 AND uid = %d LIMIT 1) WHERE abook_profile = '%s' AND abook_channel = %d ",
- intval(local_user()),
- dbesc($profile_guid),
- intval(local_user())
- );
- $r = q("DELETE FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
- intval(argv(2)),
- intval(local_user())
- );
- if($r)
- info( t('Profile deleted.') . EOL);
-
- goaway($a->get_baseurl(true) . '/profiles');
- return; // NOTREACHED
- }
-
-
-
-
-
- if((argc() > 1) && (argv(1) === 'new')) {
-
- check_form_security_token_redirectOnErr('/profiles', 'profile_new', 't');
-
- $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
- intval(local_user()));
- $num_profiles = count($r0);
-
- $name = t('Profile-') . ($num_profiles + 1);
-
- $r1 = q("SELECT `name`, `photo`, `thumb` FROM `profile` WHERE `uid` = %d AND `is_default` = 1 LIMIT 1",
- intval(local_user()));
-
- $r2 = q("INSERT INTO `profile` (`aid`, `uid` , `profile_guid`, `profile_name` , `name`, `photo`, `thumb`)
- VALUES ( %d, '%s', '%s', '%s', '%s' )",
- intval(get_account_id()),
- intval(local_user()),
- dbesc(random_string()),
- dbesc($name),
- dbesc($r1[0]['name']),
- dbesc($r1[0]['photo']),
- dbesc($r1[0]['thumb'])
- );
-
- $r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile_name` = '%s' LIMIT 1",
- intval(local_user()),
- dbesc($name)
- );
-
- info( t('New profile created.') . EOL);
- if(count($r3) == 1)
- goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
-
- goaway($a->get_baseurl(true) . '/profiles');
- }
-
- if((argc() > 2) && (argv(1) === 'clone')) {
-
- check_form_security_token_redirectOnErr('/profiles', 'profile_clone', 't');
-
- $r0 = q("SELECT `id` FROM `profile` WHERE `uid` = %d",
- intval(local_user()));
- $num_profiles = count($r0);
-
- $name = t('Profile-') . ($num_profiles + 1);
- $r1 = q("SELECT * FROM `profile` WHERE `uid` = %d AND `id` = %d LIMIT 1",
- intval(local_user()),
- intval($a->argv[2])
- );
- if(! count($r1)) {
- notice( t('Profile unavailable to clone.') . EOL);
- return;
- }
- unset($r1[0]['id']);
- $r1[0]['is_default'] = 0;
- $r1[0]['publish'] = 0;
- $r1[0]['profile_name'] = dbesc($name);
- $r1[0]['profile_guid'] = dbesc(random_string());
-
- dbesc_array($r1[0]);
-
- $r2 = dbq("INSERT INTO `profile` (`"
- . implode("`, `", array_keys($r1[0]))
- . "`) VALUES ('"
- . implode("', '", array_values($r1[0]))
- . "')" );
-
- $r3 = q("SELECT `id` FROM `profile` WHERE `uid` = %d AND `profile_name` = '%s' LIMIT 1",
- intval(local_user()),
- dbesc($name)
- );
- info( t('New profile created.') . EOL);
- if(count($r3) == 1)
- goaway($a->get_baseurl(true) . '/profiles/' . $r3[0]['id']);
-
- goaway($a->get_baseurl(true) . '/profiles');
-
- return; // NOTREACHED
- }
-
-
if((argc() > 1) && (intval(argv(1)))) {
$r = q("SELECT * FROM `profile` WHERE `id` = %d AND `uid` = %d LIMIT 1",
intval($a->argv[1]),
@@ -441,10 +479,6 @@ function profiles_content(&$a) {
return;
}
- $chan = $a->get_channel();
-
- profile_load($a,$chan['channel_address'],$r[0]['id']);
-
require_once('include/profile_selectors.php');
diff --git a/mod/profperm.php b/mod/profperm.php
index b31dfc128..7c7fe7b11 100644
--- a/mod/profperm.php
+++ b/mod/profperm.php
@@ -13,6 +13,15 @@ function profperm_init(&$a) {
}
+function profperm_aside(&$a) {
+
+ if(! local_user())
+ return;
+
+ profile_aside($a);
+}
+
+
function profperm_content(&$a) {
if(! local_user()) {
diff --git a/mod/viewcontacts.php b/mod/viewcontacts.php
index 8133fb4a0..7f5050d5d 100644
--- a/mod/viewcontacts.php
+++ b/mod/viewcontacts.php
@@ -11,6 +11,16 @@ function viewcontacts_init(&$a) {
}
+function viewcontacts_aside(&$a) {
+
+ if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+ return;
+ }
+
+ profile_aside($a);
+}
+
+
function viewcontacts_content(&$a) {
if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
diff --git a/mod/xrd.php b/mod/xrd.php
index d22ff4699..a576f76c4 100644
--- a/mod/xrd.php
+++ b/mod/xrd.php
@@ -29,7 +29,7 @@ function xrd_init(&$a) {
$dspr = '';
- $tpl = file_get_contents('view/xrd_person.tpl');
+ $tpl = get_markup_template('view/xrd_person.tpl');
$o = replace_macros($tpl, array(
'$nick' => $r[0]['nickname'],
diff --git a/mods/friendica-to-smarty-tpl.py b/mods/friendica-to-smarty-tpl.py
new file mode 100755
index 000000000..b82aa912a
--- /dev/null
+++ b/mods/friendica-to-smarty-tpl.py
@@ -0,0 +1,198 @@
+#!/usr/bin/python
+#
+# Script to convert Friendica internal template files into Smarty template files
+# Copyright 2012 Zach Prezkuta
+# Licensed under GPL v3
+
+import os, re, string
+
+ldelim = '{{'
+rdelim = '}}'
+
+def fToSmarty(matches):
+ match = matches.group(0)
+ if match == '$j':
+ return match
+ match = string.replace(match, '[', '')
+ match = string.replace(match, ']', '')
+
+ ldel = ldelim
+ rdel = rdelim
+ if match.find("'") > -1:
+ match = string.replace(match, "'", '')
+ ldel = "'" + ldel
+ rdel = rdel + "'"
+ elif match.find('"') > -1:
+ match = string.replace(match, '"', '')
+ ldel = '"' + ldel
+ rdel = rdel + '"'
+
+ return ldel + match + rdel
+
+
+def fix_element(element):
+ # Much of the positioning here is important, e.g. if you do element.find('if ') before you do
+ # element.find('endif'), then you may get some multiply-replaced delimiters
+
+ if element.find('endif') > -1:
+ element = ldelim + '/if' + rdelim
+ return element
+
+ if element.find('if ') > -1:
+ element = string.replace(element, '{{ if', ldelim + 'if')
+ element = string.replace(element, '{{if', ldelim + 'if')
+ element = string.replace(element, ' }}', rdelim)
+ element = string.replace(element, '}}', rdelim)
+ return element
+
+ if element.find('else') > -1:
+ element = ldelim + 'else' + rdelim
+ return element
+
+ if element.find('endfor') > -1:
+ element = ldelim + '/foreach' + rdelim
+ return element
+
+ if element.find('for ') > -1:
+ element = string.replace(element, '{{ for ', ldelim + 'foreach ')
+ element = string.replace(element, '{{for ', ldelim + 'foreach ')
+ element = string.replace(element, ' }}', rdelim)
+ element = string.replace(element, '}}', rdelim)
+ return element
+
+ if element.find('endinc') > -1:
+ element = ''
+ return element
+
+ if element.find('inc ') > -1:
+ parts = element.split(' ')
+ element = ldelim + 'include file="'
+
+ # We need to find the file name. It'll either be in parts[1] if the element was written as {{ inc file.tpl }}
+ # or it'll be in parts[2] if the element was written as {{inc file.tpl}}
+ if parts[0].find('inc') > -1:
+ first = 0
+ else:
+ first = 1
+
+ if parts[first+1][0] == '$':
+ # This takes care of elements where the filename is a variable, e.g. {{ inc $file }}
+ element += ldelim + parts[first+1].rstrip('}') + rdelim
+ else:
+ # This takes care of elements where the filename is a path, e.g. {{ inc file.tpl }}
+ element += parts[first+1].rstrip('}')
+
+ element += '"'
+
+ if len(parts) > first + 1 and parts[first+2] == 'with':
+ # Take care of variable substitutions, e.g. {{ inc file.tpl with $var=this_var }}
+ element += ' ' + parts[first+3].rstrip('}')[1:]
+
+ element += rdelim
+ return element
+
+
+def convert(filename, tofilename, php_tpl):
+ for line in filename:
+ newline = ''
+ st_pos = 0
+ brack_pos = line.find('{{')
+
+ if php_tpl:
+ # If php_tpl is True, this script will only convert variables in quotes, like '$variable'
+ # or "$variable". This is for .tpl files that produce PHP scripts, where you don't want
+ # all the PHP variables converted into Smarty variables
+ pattern1 = re.compile(r"""
+([\'\"]\$\[[a-zA-Z]\w*
+(\.
+(\d+|[a-zA-Z][\w-]*)
+)*
+(\|[\w\$:\.]*)*
+\][\'\"])
+""", re.VERBOSE)
+ pattern2 = re.compile(r"""
+([\'\"]\$[a-zA-Z]\w*
+(\.
+(\d+|[a-zA-Z][\w-]*)
+)*
+(\|[\w\$:\.]*)*
+[\'\"])
+""", re.VERBOSE)
+ else:
+ # Compile the pattern for bracket-style variables, e.g. $[variable.key|filter:arg1:arg2|filter2:arg1:arg2]
+ # Note that dashes are only allowed in array keys if the key doesn't start
+ # with a number, e.g. $[variable.key-id] is ok but $[variable.12-id] isn't
+ #
+ # Doesn't currently process the argument position key 'x', i.e. filter:arg1:x:arg2 doesn't get
+ # changed to arg1|filter:variable:arg2 like Smarty requires
+ #
+ # Filter arguments can be variables, e.g. $variable, but currently can't have array keys with dashes
+ # like filter:$variable.key-name
+ pattern1 = re.compile(r"""
+(\$\[[a-zA-Z]\w*
+(\.
+(\d+|[a-zA-Z][\w-]*)
+)*
+(\|[\w\$:\.]*)*
+\])
+""", re.VERBOSE)
+
+ # Compile the pattern for normal style variables, e.g. $variable.key
+ pattern2 = re.compile(r"""
+(\$[a-zA-Z]\w*
+(\.
+(\d+|[a-zA-Z][\w-]*)
+)*
+(\|[\w\$:\.]*)*
+)
+""", re.VERBOSE)
+
+ while brack_pos > -1:
+ if brack_pos > st_pos:
+ line_segment = line[st_pos:brack_pos]
+ line_segment = pattern2.sub(fToSmarty, line_segment)
+ newline += pattern1.sub(fToSmarty, line_segment)
+
+ end_brack_pos = line.find('}}', brack_pos)
+ if end_brack_pos < 0:
+ print "Error: no matching bracket found"
+
+ newline += fix_element(line[brack_pos:end_brack_pos + 2])
+ st_pos = end_brack_pos + 2
+
+ brack_pos = line.find('{{', st_pos)
+
+ line_segment = line[st_pos:]
+ line_segment = pattern2.sub(fToSmarty, line_segment)
+ newline += pattern1.sub(fToSmarty, line_segment)
+ newline = newline.replace("{#", ldelim + "*")
+ newline = newline.replace("#}", "*" + rdelim)
+ tofilename.write(newline)
+
+
+path = raw_input('Path to template folder to convert: ')
+if path[-1:] != '/':
+ path = path + '/'
+
+outpath = path + 'smarty3/'
+
+if not os.path.exists(outpath):
+ os.makedirs(outpath)
+
+files = os.listdir(path)
+for a_file in files:
+ if a_file == 'htconfig.tpl':
+ php_tpl = True
+ else:
+ php_tpl = False
+
+ filename = os.path.join(path,a_file)
+ ext = a_file.split('.')[-1]
+ if os.path.isfile(filename) and ext == 'tpl':
+ with open(filename, 'r') as f:
+ newfilename = os.path.join(outpath,a_file)
+ with open(newfilename, 'w') as outf:
+ print "Converting " + filename + " to " + newfilename
+ convert(f, outf, php_tpl)
+
+
diff --git a/view/theme/fancyred/php/config.php b/view/theme/fancyred/php/config.php
index 48035f507..833d09050 100644
--- a/view/theme/fancyred/php/config.php
+++ b/view/theme/fancyred/php/config.php
@@ -65,7 +65,7 @@ function fancyred_form(&$a, $font_size, $line_height, $colour) {
'dark' => 'dark',
);
- $t = file_get_contents( dirname(__file__). "/../tpl/theme_settings.tpl" );
+ $t = get_markup_template('theme_settings.tpl');
$o .= replace_macros($t, array(
'$submit' => t('Submit'),
'$baseurl' => $a->get_baseurl(),
diff --git a/view/theme/fancyred/php/theme.php b/view/theme/fancyred/php/theme.php
index b77664567..1ac6d4d21 100644
--- a/view/theme/fancyred/php/theme.php
+++ b/view/theme/fancyred/php/theme.php
@@ -1,5 +1,6 @@
<?php
function fancyred_init(&$a) {
+ $a->set_template_engine('smarty3');
// head_add_js('redbasic.js');
}
diff --git a/view/theme/redbasic/php/config.php b/view/theme/redbasic/php/config.php
index 1ca9cc5ed..ad5df57ce 100644
--- a/view/theme/redbasic/php/config.php
+++ b/view/theme/redbasic/php/config.php
@@ -65,7 +65,7 @@ function redbasic_form(&$a, $font_size, $line_height, $colour) {
'dark' => 'dark',
);
- $t = file_get_contents( dirname(__file__). "/../tpl/theme_settings.tpl" );
+ $t = get_markup_template('theme_settings.tpl');
$o .= replace_macros($t, array(
'$submit' => t('Submit'),
'$baseurl' => $a->get_baseurl(),
diff --git a/view/theme/redbasic/php/theme.php b/view/theme/redbasic/php/theme.php
index 47e1df5d1..52e571f0a 100644
--- a/view/theme/redbasic/php/theme.php
+++ b/view/theme/redbasic/php/theme.php
@@ -1,5 +1,6 @@
<?php
function redbasic_init(&$a) {
+ $a->set_template_engine('smarty3');
// head_add_js('redbasic.js');
}
diff --git a/view/theme/redbasic/tpl/smarty3/lang_selector.tpl b/view/theme/redbasic/tpl/smarty3/lang_selector.tpl
new file mode 100644
index 000000000..945cbf51e
--- /dev/null
+++ b/view/theme/redbasic/tpl/smarty3/lang_selector.tpl
@@ -0,0 +1,10 @@
+<div id="lang-select-icon" class="icon s22 language" title="{{$title}}" onclick="openClose('language-selector');" ></div>
+<div id="language-selector" style="display: none;" >
+ <form action="#" method="post" >
+ <select name="system_language" onchange="this.form.submit();" >
+ {{foreach $langs.0 as $v=>$l}}
+ <option value="{{$v}}" {{if $v==$langs.1}}selected="selected"{{/if}}>{{$l}}</option>
+ {{/foreach}}
+ </select>
+ </form>
+</div>
diff --git a/view/theme/redbasic/tpl/smarty3/moderated_comment.tpl b/view/theme/redbasic/tpl/smarty3/moderated_comment.tpl
new file mode 100644
index 000000000..8fbdf4bc4
--- /dev/null
+++ b/view/theme/redbasic/tpl/smarty3/moderated_comment.tpl
@@ -0,0 +1,61 @@
+ <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-{{$id}}" style="display: block;">
+ <form class="comment-edit-form" id="comment-edit-form-{{$id}}" action="item" method="post" onsubmit="post_comment({{$id}}); return false;">
+ <input type="hidden" name="type" value="{{$type}}" />
+ <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
+ <input type="hidden" name="parent" value="{{$parent}}" />
+ <input type="hidden" name="return" value="{{$return_path}}" />
+ <input type="hidden" name="jsreload" value="{{$jsreload}}" />
+ <input type="hidden" name="preview" id="comment-preview-inp-{{$id}}" value="0" />
+
+ <div class="comment-edit-photo" id="comment-edit-photo-{{$id}}" >
+ <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
+ </div>
+ <div class="comment-edit-photo-end"></div>
+ <div id="mod-cmnt-wrap-{{$id}}" class="mod-cmnt-wrap" style="display:none">
+ <div id="mod-cmnt-name-lbl-{{$id}}" class="mod-cmnt-name-lbl">{{$lbl_modname}}</div>
+ <input type="text" id="mod-cmnt-name-{{$id}}" class="mod-cmnt-name" name="mod-cmnt-name" value="{{$modname}}" />
+ <div id="mod-cmnt-email-lbl-{{$id}}" class="mod-cmnt-email-lbl">{{$lbl_modemail}}</div>
+ <input type="text" id="mod-cmnt-email-{{$id}}" class="mod-cmnt-email" name="mod-cmnt-email" value="{{$modemail}}" />
+ <div id="mod-cmnt-url-lbl-{{$id}}" class="mod-cmnt-url-lbl">{{$lbl_modurl}}</div>
+ <input type="text" id="mod-cmnt-url-{{$id}}" class="mod-cmnt-url" name="mod-cmnt-url" value="{{$modurl}}" />
+ </div>
+ <ul class="comment-edit-bb-{{$id}}">
+ <li><a class="editicon boldbb shadow"
+ style="cursor: pointer;" title="{{$edbold}}"
+ onclick="insertFormatting('{{$comment}}','b', {{$id}});"></a></li>
+ <li><a class="editicon italicbb shadow"
+ style="cursor: pointer;" title="{{$editalic}}"
+ onclick="insertFormatting('{{$comment}}','i', {{$id}});"></a></li>
+ <li><a class="editicon underlinebb shadow"
+ style="cursor: pointer;" title="{{$eduline}}"
+ onclick="insertFormatting('{{$comment}}','u', {{$id}});"></a></li>
+ <li><a class="editicon quotebb shadow"
+ style="cursor: pointer;" title="{{$edquote}}"
+ onclick="insertFormatting('{{$comment}}','quote', {{$id}});"></a></li>
+ <li><a class="editicon codebb shadow"
+ style="cursor: pointer;" title="{{$edcode}}"
+ onclick="insertFormatting('{{$comment}}','code', {{$id}});"></a></li>
+ <li><a class="editicon imagebb shadow"
+ style="cursor: pointer;" title="{{$edimg}}"
+ onclick="insertFormatting('{{$comment}}','img', {{$id}});"></a></li>
+ <li><a class="editicon urlbb shadow"
+ style="cursor: pointer;" title="{{$edurl}}"
+ onclick="insertFormatting('{{$comment}}','url', {{$id}});"></a></li>
+ <li><a class="editicon videobb shadow"
+ style="cursor: pointer;" title="{{$edvideo}}"
+ onclick="insertFormatting('{{$comment}}','video', {{$id}});"></a></li>
+ </ul>
+ <div class="comment-edit-bb-end"></div>
+ <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,{{$id}});cmtBbOpen({{$id}});" onBlur="commentClose(this,{{$id}});" >{{$comment}}</textarea>
+
+ <div class="comment-edit-text-end"></div>
+ <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" >
+ <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" />
+ <span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>
+ <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
+ </div>
+
+ <div class="comment-edit-end"></div>
+ </form>
+
+ </div>
diff --git a/view/theme/redbasic/tpl/smarty3/profile_vcard.tpl b/view/theme/redbasic/tpl/smarty3/profile_vcard.tpl
new file mode 100644
index 000000000..048c461f4
--- /dev/null
+++ b/view/theme/redbasic/tpl/smarty3/profile_vcard.tpl
@@ -0,0 +1,51 @@
+<div class="vcard">
+
+ <div class="fn label">{{$profile.name}}</div>
+
+
+
+ {{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
+ <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
+
+
+
+ {{if $location}}
+ <dl class="location"><dt class="location-label">{{$location}}</dt>
+ <dd class="adr">
+ {{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}}
+ <span class="city-state-zip">
+ <span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
+ <span class="region">{{$profile.region}}</span>
+ <span class="postal-code">{{$profile.postal-code}}</span>
+ </span>
+ {{if $profile.country-name}}<span class="country-name">{{$profile.country-name}}</span>{{/if}}
+ </dd>
+ </dl>
+ {{/if}}
+
+ {{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender">{{$profile.gender}}</dd></dl>{{/if}}
+
+ {{if $profile.pubkey}}<div class="key" style="display:none;">{{$profile.pubkey}}</div>{{/if}}
+
+ {{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
+
+ {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" >{{$profile.homepage}}</a></dd></dl>{{/if}}
+
+ {{include file="diaspora_vcard.tpl"}}
+
+ <div id="profile-vcard-break"></div>
+ <div id="profile-extra-links">
+ <ul>
+ {{if $connect}}
+ <li><a id="dfrn-request-link" href="dfrn_request/{{$profile.nickname}}">{{$connect}}</a></li>
+ {{/if}}
+ {{if $wallmessage}}
+ <li><a id="wallmessage-link" href="wallmessage/{{$profile.nickname}}">{{$wallmessage}}</a></li>
+ {{/if}}
+ </ul>
+ </div>
+</div>
+
+{{$contact_block}}
+
+
diff --git a/view/theme/redbasic/tpl/smarty3/prv_message.tpl b/view/theme/redbasic/tpl/smarty3/prv_message.tpl
new file mode 100644
index 000000000..9023540c4
--- /dev/null
+++ b/view/theme/redbasic/tpl/smarty3/prv_message.tpl
@@ -0,0 +1,39 @@
+
+<h3>{{$header}}</h3>
+
+<div id="prvmail-wrapper" >
+<form id="prvmail-form" action="message" method="post" >
+
+{{$parent}}
+
+<div id="prvmail-to-label">{{$to}}</div>
+
+{{if $showinputs}}
+<input type="text" id="recip" name="messagerecip" value="{{$prefill}}" maxlength="255" size="64" tabindex="10" />
+<input type="hidden" id="recip-complete" name="messageto" value="{{$preid}}">
+{{else}}
+{{$select}}
+{{/if}}
+
+<div id="prvmail-subject-label">{{$subject}}</div>
+<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" {{$readonly}} tabindex="11" />
+
+<div id="prvmail-message-label">{{$yourmessage}}</div>
+<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
+
+
+<div id="prvmail-submit-wrapper" >
+ <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
+ <div id="prvmail-upload-wrapper" >
+ <div id="prvmail-upload" class="icon border camera" title="{{$upload}}" ></div>
+ </div>
+ <div id="prvmail-link-wrapper" >
+ <div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();" ></div>
+ </div>
+ <div id="prvmail-rotator-wrapper" >
+ <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ </div>
+</div>
+<div id="prvmail-end"></div>
+</form>
+</div>
diff --git a/view/tpl/admin_users.tpl b/view/tpl/admin_users.tpl
index f67e4a0f7..727030f5d 100644
--- a/view/tpl/admin_users.tpl
+++ b/view/tpl/admin_users.tpl
@@ -70,7 +70,7 @@
<td class='register_date'>$u.register_date</td>
<td class='login_date'>$u.login_date</td>
<td class='lastitem_date'>$u.lastitem_date</td>
- <td class='login_date'>$u.page-flags</td>
+ <td class='login_date'>$u.page_flags</td>
<td class="checkbox"><input type="checkbox" class="users_ckbx" id="id_user_$u.uid" name="user[]" value="$u.uid"/></td>
<td class="tools">
<a href="$baseurl/admin/users/block/$u.uid?t=$form_security_token" title='{{ if $u.blocked }}$unblock{{ else }}$block{{ endif }}'><span class='icon block {{ if $u.blocked==0 }}dim{{ endif }}'></span></a>
diff --git a/view/tpl/directory_item.tpl b/view/tpl/directory_item.tpl
index b45da4465..d496cb2ad 100644
--- a/view/tpl/directory_item.tpl
+++ b/view/tpl/directory_item.tpl
@@ -2,7 +2,7 @@
<div class="directory-item lframe" id="directory-item-$id" >
<div class="contact-photo-wrapper" id="directory-photo-wrapper-$id" >
<div class="contact-photo" id="directory-photo-$id" >
- <a href="$profile-link" class="directory-profile-link" id="directory-profile-link-$id" ><img class="directory-photo-img" src="$photo" alt="$alt-text" title="$alt-text" /></a>
+ <a href="$profile_link" class="directory-profile-link" id="directory-profile-link-$id" ><img class="directory-photo-img" src="$photo" alt="$alt_text" title="$alt_text" /></a>
</div>
</div>
diff --git a/view/tpl/filebrowser.tpl b/view/tpl/filebrowser.tpl
index 1e97237f4..7db31d716 100644
--- a/view/tpl/filebrowser.tpl
+++ b/view/tpl/filebrowser.tpl
@@ -77,7 +77,7 @@
</div>
</div>
<div class="mceActionPanel">
- <input type="button" id="cancel" name="cancel" value="{#cancel}" onclick="tinyMCEPopup.close();" />
+ <input type="button" id="cancel" name="cancel" value="$cancel" onclick="tinyMCEPopup.close();" />
</div>
</body>
diff --git a/view/tpl/install_checks.tpl b/view/tpl/install_checks.tpl
index 1d8a4b263..76287c4a3 100644
--- a/view/tpl/install_checks.tpl
+++ b/view/tpl/install_checks.tpl
@@ -3,7 +3,7 @@
<form action="$baseurl/index.php?q=setup" method="post">
<table>
{{ for $checks as $check }}
- <tr><td>$check.title </td><td><span class="icon s22 {{if $check.status}}on{{else}}{{if$check.required}}off{{else}}yellow{{endif}}{{endif}}"></td><td>{{if $check.required}}(required){{endif}}</td></tr>
+ <tr><td>$check.title </td><td><span class="icon s22 {{if $check.status}}on{{else}}{{if $check.required}}off{{else}}yellow{{endif}}{{endif}}"></td><td>{{if $check.required}}(required){{endif}}</td></tr>
{{if $check.help }}
<tr><td colspan="3"><blockquote>$check.help</blockquote></td></tr>
{{endif}}
diff --git a/view/tpl/notifications_network_item.tpl b/view/tpl/notifications_network_item.tpl
index bd86548fc..261ab3643 100644
--- a/view/tpl/notifications_network_item.tpl
+++ b/view/tpl/notifications_network_item.tpl
@@ -1,3 +1,3 @@
<div class="notif-item">
- <a href="{$item_link}" target="friendica-notifications"><img src="{$item_image}" class="notif-image">{$item_text} <span class="notif-when">{$item_when}</span></a>
-</div> \ No newline at end of file
+ <a href="$item_link" target="friendica-notifications"><img src="$item_image" class="notif-image">$item_text <span class="notif-when">$item_when</span></a>
+</div>
diff --git a/view/tpl/smarty3/404.tpl b/view/tpl/smarty3/404.tpl
new file mode 100644
index 000000000..518ad1d29
--- /dev/null
+++ b/view/tpl/smarty3/404.tpl
@@ -0,0 +1 @@
+<h1>{{$message}}</h1>
diff --git a/view/tpl/smarty3/abook_edit.tpl b/view/tpl/smarty3/abook_edit.tpl
new file mode 100644
index 000000000..2a2711a66
--- /dev/null
+++ b/view/tpl/smarty3/abook_edit.tpl
@@ -0,0 +1,45 @@
+
+<h2>{{$header}}</h2>
+
+
+<div id="connection-flag-tabs">
+{{$tabs}}
+</div>
+
+<div id="contact-edit-wrapper">
+<br />
+<h3>Slide to adjust your degree of friendship</h3>
+
+{{$slide}}
+
+
+
+<h3>Permissions</h3>
+
+<form action="connections/{{$contact_id}}" method="post" >
+<input type="hidden" name="contact_id" value="{{$contact_id}}">
+<input id="contact-closeness-mirror" type="hidden" name="closeness" value="{{$close}}" />
+
+<br />
+<b>Quick Links:</b>
+<a href="" style="background-color: #CCC; padding: 3px; border-radius: 5px; margin-left: 15px;">Full Sharing</a><a href="" style="background-color: #CCC; padding: 3px; border-radius: 5px; margin-left: 15px;">Cautious Sharing</a><a href="" style="background-color: #CCC; padding: 3px; border-radius: 5px; margin-left: 15px;">Follow Only</a><br />
+<br />
+
+<div id="abook-advanced" class="fakelink" onclick="openClose('abook-advanced-panel');">Advanced Permissions</div>
+
+<div id="abook-advanced-panel" style="display: none;">
+
+<span class="abook-them">{{$them}}</span><span class="abook-me">{{$me}}</span>
+<br />
+<br />
+{{foreach $perms as $prm}}
+{{include file="field_acheckbox.tpl" field=$prm}}
+{{/foreach}}
+<br />
+
+</div>
+
+<input class="contact-edit-submit" type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+</div>
diff --git a/view/tpl/smarty3/acl_selector.tpl b/view/tpl/smarty3/acl_selector.tpl
new file mode 100644
index 000000000..d21073b56
--- /dev/null
+++ b/view/tpl/smarty3/acl_selector.tpl
@@ -0,0 +1,28 @@
+<div id="acl-wrapper">
+ <input id="acl-search">
+ <a href="#" id="acl-showall">{{$showall}}</a>
+ <div id="acl-list">
+ <div id="acl-list-content">
+ </div>
+ </div>
+ <span id="acl-fields"></span>
+</div>
+
+<div class="acl-list-item" rel="acl-template" style="display:none">
+ <img src="{0}"><p>{1}</p>
+ <a href="#" class='acl-button-show'>{{$show}}</a>
+ <a href="#" class='acl-button-hide'>{{$hide}}</a>
+</div>
+
+<script>
+$(document).ready(function() {
+ setTimeout( function () {
+ if(typeof acl=="undefined"){
+ acl = new ACL(
+ baseurl+"/acl",
+ [ {{$allowcid}},{{$allowgid}},{{$denycid}},{{$denygid}} ]
+ );
+ }
+ }, 5000 );
+});
+</script>
diff --git a/view/tpl/smarty3/admin_aside.tpl b/view/tpl/smarty3/admin_aside.tpl
new file mode 100644
index 000000000..acf58668d
--- /dev/null
+++ b/view/tpl/smarty3/admin_aside.tpl
@@ -0,0 +1,42 @@
+<script>
+ // update pending count //
+ $(function(){
+
+ $("nav").bind('nav-update', function(e,data){
+ var elm = $('#pending-update');
+ var register = $(data).find('register').text();
+ if (register=="0") { reigster=""; elm.hide();} else { elm.show(); }
+ elm.html(register);
+ });
+ });
+</script>
+<h4><a href="{{$admurl}}">{{$admtxt}}</a></h4>
+<ul class='admin linklist'>
+ <li class='admin link button {{$admin.site.2}}'><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
+ <li class='admin link button {{$admin.users.2}}'><a href='{{$admin.users.0}}'>{{$admin.users.1}}</a><span id='pending-update' title='{{$h_pending}}'></span></li>
+ <li class='admin link button {{$admin.plugins.2}}'><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
+ <li class='admin link button {{$admin.themes.2}}'><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
+ <li class='admin link button {{$admin.dbsync.2}}'><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
+</ul>
+
+{{if $admin.update}}
+<ul class='admin linklist'>
+ <li class='admin link button {{$admin.update.2}}'><a href='{{$admin.update.0}}'>{{$admin.update.1}}</a></li>
+ <li class='admin link button {{$admin.update.2}}'><a href='https://kakste.com/profile/inthegit'>Important Changes</a></li>
+</ul>
+{{/if}}
+
+
+{{if $admin.plugins_admin}}<h4>{{$plugadmtxt}}</h4>{{/if}}
+<ul class='admin linklist'>
+ {{foreach $admin.plugins_admin as $l}}
+ <li class='admin link button {{$l.2}}'><a href='{{$l.0}}'>{{$l.1}}</a></li>
+ {{/foreach}}
+</ul>
+
+
+<h4>{{$logtxt}}</h4>
+<ul class='admin linklist'>
+ <li class='admin link button {{$admin.logs.2}}'><a href='{{$admin.logs.0}}'>{{$admin.logs.1}}</a></li>
+</ul>
+
diff --git a/view/tpl/smarty3/admin_logs.tpl b/view/tpl/smarty3/admin_logs.tpl
new file mode 100644
index 000000000..e5412429f
--- /dev/null
+++ b/view/tpl/smarty3/admin_logs.tpl
@@ -0,0 +1,19 @@
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <form action="{{$baseurl}}/admin/logs" method="post">
+ <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+ {{include file="field_checkbox.tpl" field=$debugging}}
+ {{include file="field_input.tpl" field=$logfile}}
+ {{include file="field_select.tpl" field=$loglevel}}
+
+ <div class="submit"><input type="submit" name="page_logs" value="{{$submit}}" /></div>
+
+ </form>
+
+ <h3>{{$logname}}</h3>
+ <div style="width:100%; height:400px; overflow: auto; "><pre>{{$data}}</pre></div>
+<!-- <iframe src='{{$baseurl}}/{{$logname}}' style="width:100%; height:400px"></iframe> -->
+ <!-- <div class="submit"><input type="submit" name="page_logs_clear_log" value="{{$clear}}" /></div> -->
+</div>
diff --git a/view/tpl/smarty3/admin_plugins.tpl b/view/tpl/smarty3/admin_plugins.tpl
new file mode 100644
index 000000000..01c178c3e
--- /dev/null
+++ b/view/tpl/smarty3/admin_plugins.tpl
@@ -0,0 +1,15 @@
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <ul id='pluginslist'>
+ {{foreach $plugins as $p}}
+ <li class='plugin {{$p.1}}'>
+ <a class='toggleplugin' href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}?a=t&amp;t={{$form_security_token}}' title="{{if $p.1==on}}Disable{{else}}Enable{{/if}}" ><span class='icon {{$p.1}}'></span></a>
+ <a href='{{$baseurl}}/admin/{{$function}}/{{$p.0}}'><span class='name'>{{$p.2.name}}</span></a> - <span class="version">{{$p.2.version}}</span>
+ {{if $p.2.experimental}} {{$experimental}} {{/if}}{{if $p.2.unsupported}} {{$unsupported}} {{/if}}
+
+ <div class='desc'>{{$p.2.description}}</div>
+ </li>
+ {{/foreach}}
+ </ul>
+</div>
diff --git a/view/tpl/smarty3/admin_plugins_details.tpl b/view/tpl/smarty3/admin_plugins_details.tpl
new file mode 100644
index 000000000..47c33bec3
--- /dev/null
+++ b/view/tpl/smarty3/admin_plugins_details.tpl
@@ -0,0 +1,36 @@
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <p><span class='toggleplugin icon {{$status}}'></span> {{$info.name}} - {{$info.version}} : <a href="{{$baseurl}}/admin/{{$function}}/{{$plugin}}/?a=t&amp;t={{$form_security_token}}">{{$action}}</a></p>
+ <p>{{$info.description}}</p>
+
+ <p class="author">{{$str_author}}
+ {{foreach $info.author as $a}}
+ {{if $a.link}}<a href="{{$a.link}}">{{$a.name}}</a>{{else}}{{$a.name}}{{/if}},
+ {{/foreach}}
+ </p>
+
+ <p class="maintainer">{{$str_maintainer}}
+ {{foreach $info.maintainer as $a}}
+ {{if $a.link}}<a href="{{$a.link}}">{{$a.name}}</a>{{else}}{{$a.name}}{{/if}},
+ {{/foreach}}
+ </p>
+
+ {{if $screenshot}}
+ <a href="{{$screenshot.0}}" class='screenshot'><img src="{{$screenshot.0}}" alt="{{$screenshot.1}}" /></a>
+ {{/if}}
+
+ {{if $admin_form}}
+ <h3>{{$settings}}</h3>
+ <form method="post" action="{{$baseurl}}/admin/{{$function}}/{{$plugin}}/">
+ {{$admin_form}}
+ </form>
+ {{/if}}
+
+ {{if $readme}}
+ <h3>Readme</h3>
+ <div id="plugin_readme">
+ {{$readme}}
+ </div>
+ {{/if}}
+</div>
diff --git a/view/tpl/smarty3/admin_remoteupdate.tpl b/view/tpl/smarty3/admin_remoteupdate.tpl
new file mode 100644
index 000000000..6260741ed
--- /dev/null
+++ b/view/tpl/smarty3/admin_remoteupdate.tpl
@@ -0,0 +1,98 @@
+<script src="js/jquery.htmlstream.js"></script>
+<script>
+ /* ajax updater */
+ function updateEnd(data){
+ //$("#updatepopup .panel_text").html(data);
+ $("#remoteupdate_form").find("input").removeAttr('disabled');
+ $(".panel_action_close").fadeIn()
+ }
+ function updateOn(data){
+
+ var patt=/§([^§]*)§/g;
+ var matches = data.match(patt);
+ $(matches).each(function(id,data){
+ data = data.replace(/§/g,"");
+ d = data.split("@");
+ console.log(d);
+ elm = $("#updatepopup .panel_text #"+d[0]);
+ html = "<div id='"+d[0]+"' class='progress'>"+d[1]+"<span>"+d[2]+"</span></div>";
+ if (elm.length==0){
+ $("#updatepopup .panel_text").append(html);
+ } else {
+ $(elm).replaceWith(html);
+ }
+ });
+
+
+ }
+
+ $(function(){
+ $("#remoteupdate_form").submit(function(){
+ var data={};
+ $(this).find("input").each(function(i, e){
+ name = $(e).attr('name');
+ value = $(e).val();
+ e.disabled = true;
+ data[name]=value;
+ });
+
+ $("#updatepopup .panel_text").html("");
+ $("#updatepopup").show();
+ $("#updatepopup .panel").hide().slideDown(500);
+ $(".panel_action_close").hide().click(function(){
+ $("#updatepopup .panel").slideUp(500, function(){
+ $("#updatepopup").hide();
+ });
+ });
+
+ $.post(
+ $(this).attr('action'),
+ data,
+ updateEnd,
+ 'text',
+ updateOn
+ );
+
+
+ return false;
+ })
+ });
+</script>
+<div id="updatepopup" class="popup">
+ <div class="background"></div>
+ <div class="panel">
+ <div class="panel_in">
+ <h1>Friendica Update</h1>
+ <div class="panel_text"></div>
+ <div class="panel_actions">
+ <input type="button" value="{{$close}}" class="panel_action_close">
+ </div>
+ </div>
+ </div>
+</div>
+<div id="adminpage">
+ <dl> <dt>Your version:</dt><dd>{{$localversion}}</dd> </dl>
+{{if $needupdate}}
+ <dl> <dt>New version:</dt><dd>{{$remoteversion}}</dd> </dl>
+
+ <form id="remoteupdate_form" method="POST" action="{{$baseurl}}/admin/update">
+ <input type="hidden" name="{{$remotefile.0}}" value="{{$remotefile.2}}">
+
+ {{if $canwrite}}
+ <div class="submit"><input type="submit" name="remoteupdate" value="{{$submit}}" /></div>
+ {{else}}
+ <h3>Your friendica installation is not writable by web server.</h3>
+ {{if $canftp}}
+ <p>You can try to update via FTP</p>
+ {{include file="field_input.tpl" field=$ftphost}}
+ {{include file="field_input.tpl" field=$ftppath}}
+ {{include file="field_input.tpl" field=$ftpuser}}
+ {{include file="field_password.tpl" field=$ftppwd}}
+ <div class="submit"><input type="submit" name="remoteupdate" value="{{$submit}}" /></div>
+ {{/if}}
+ {{/if}}
+ </form>
+{{else}}
+<h4>No updates</h4>
+{{/if}}
+</div>
diff --git a/view/tpl/smarty3/admin_site.tpl b/view/tpl/smarty3/admin_site.tpl
new file mode 100644
index 000000000..86cac214f
--- /dev/null
+++ b/view/tpl/smarty3/admin_site.tpl
@@ -0,0 +1,82 @@
+<script>
+ $(function(){
+
+ $("#cnftheme").fancybox({
+ width: 800,
+ autoDimensions: false,
+ onStart: function(){
+ var theme = $("#id_theme :selected").val();
+ $("#cnftheme").attr('href',"{{$baseurl}}/admin/themes/"+theme);
+ },
+ onComplete: function(){
+ $("div#fancybox-content form").submit(function(e){
+ var url = $(this).attr('action');
+ // can't get .serialize() to work...
+ var data={};
+ $(this).find("input").each(function(){
+ data[$(this).attr('name')] = $(this).val();
+ });
+ $(this).find("select").each(function(){
+ data[$(this).attr('name')] = $(this).children(":selected").val();
+ });
+ console.log(":)", url, data);
+
+ $.post(url, data, function(data) {
+ if(timer) clearTimeout(timer);
+ NavUpdate();
+ $.fancybox.close();
+ })
+
+ return false;
+ });
+
+ }
+ });
+ });
+</script>
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <form action="{{$baseurl}}/admin/site" method="post">
+ <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+ {{include file="field_input.tpl" field=$sitename}}
+ {{include file="field_textarea.tpl" field=$banner}}
+ {{include file="field_select.tpl" field=$language}}
+ {{include file="field_select.tpl" field=$theme}}
+ {{include file="field_select.tpl" field=$ssl_policy}}
+
+ <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
+
+ <h3>{{$registration}}</h3>
+ {{include file="field_input.tpl" field=$register_text}}
+ {{include file="field_select.tpl" field=$register_policy}}
+
+ <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
+
+ <h3>{{$upload}}</h3>
+ {{include file="field_input.tpl" field=$maximagesize}}
+
+ <h3>{{$corporate}}</h3>
+ {{include file="field_input.tpl" field=$allowed_sites}}
+ {{include file="field_input.tpl" field=$allowed_email}}
+ {{include file="field_checkbox.tpl" field=$block_public}}
+ {{include file="field_checkbox.tpl" field=$force_publish}}
+ {{include file="field_checkbox.tpl" field=$no_community_page}}
+ {{include file="field_input.tpl" field=$global_directory}}
+
+ <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
+
+ <h3>{{$advanced}}</h3>
+ {{include file="field_input.tpl" field=$proxy}}
+ {{include file="field_input.tpl" field=$proxyuser}}
+ {{include file="field_input.tpl" field=$timeout}}
+ {{include file="field_input.tpl" field=$delivery_interval}}
+ {{include file="field_input.tpl" field=$poll_interval}}
+ {{include file="field_input.tpl" field=$maxloadavg}}
+ {{include file="field_input.tpl" field=$abandon_days}}
+
+ <div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>
+
+ </form>
+</div>
diff --git a/view/tpl/smarty3/admin_summary.tpl b/view/tpl/smarty3/admin_summary.tpl
new file mode 100644
index 000000000..339dbddb6
--- /dev/null
+++ b/view/tpl/smarty3/admin_summary.tpl
@@ -0,0 +1,40 @@
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <dl>
+ <dt>{{$queues.label}}</dt>
+ <dd>{{$queues.deliverq}} - {{$queues.queue}}</dd>
+ </dl>
+ <dl>
+ <dt>{{$pending.0}}</dt>
+ <dd>{{$pending.1}}</dt>
+ </dl>
+
+ <dl>
+ <dt>{{$users.0}}</dt>
+ <dd>{{$users.1}}</dd>
+ </dl>
+ {{foreach $accounts as $p}}
+ <dl>
+ <dt>{{$p.0}}</dt>
+ <dd>{{if $p.1}}{{$p.1}}{{else}}0{{/if}}</dd>
+ </dl>
+ {{/foreach}}
+
+
+ <dl>
+ <dt>{{$plugins.0}}</dt>
+
+ {{foreach $plugins.1 as $p}}
+ <dd>{{$p}}</dd>
+ {{/foreach}}
+
+ </dl>
+
+ <dl>
+ <dt>{{$version.0}}</dt>
+ <dd>{{$version.1}} - {{$build}}</dt>
+ </dl>
+
+
+</div>
diff --git a/view/tpl/smarty3/admin_users.tpl b/view/tpl/smarty3/admin_users.tpl
new file mode 100644
index 000000000..d71d770f3
--- /dev/null
+++ b/view/tpl/smarty3/admin_users.tpl
@@ -0,0 +1,89 @@
+<script>
+ function confirm_delete(uname){
+ return confirm( "{{$confirm_delete}}".format(uname));
+ }
+ function confirm_delete_multi(){
+ return confirm("{{$confirm_delete_multi}}");
+ }
+ function selectall(cls){
+ $("."+cls).attr('checked','checked');
+ return false;
+ }
+</script>
+<div id='adminpage'>
+ <h1>{{$title}} - {{$page}}</h1>
+
+ <form action="{{$baseurl}}/admin/users" method="post">
+ <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+ <h3>{{$h_pending}}</h3>
+ {{if $pending}}
+ <table id='pending'>
+ <thead>
+ <tr>
+ {{foreach $th_pending as $th}}<th>{{$th}}</th>{{/foreach}}
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {{foreach $pending as $u}}
+ <tr>
+ <td class="created">{{$u.created}}</td>
+ <td class="name">{{$u.name}}</td>
+ <td class="email">{{$u.email}}</td>
+ <td class="checkbox"><input type="checkbox" class="pending_ckbx" id="id_pending_{{$u.hash}}" name="pending[]" value="{{$u.hash}}" /></td>
+ <td class="tools">
+ <a href="{{$baseurl}}/regmod/allow/{{$u.hash}}" title='{{$approve}}'><span class='icon like'></span></a>
+ <a href="{{$baseurl}}/regmod/deny/{{$u.hash}}" title='{{$deny}}'><span class='icon dislike'></span></a>
+ </td>
+ </tr>
+ {{/foreach}}
+ </tbody>
+ </table>
+ <div class='selectall'><a href='#' onclick="return selectall('pending_ckbx');">{{$select_all}}</a></div>
+ <div class="submit"><input type="submit" name="page_users_deny" value="{{$deny}}"/> <input type="submit" name="page_users_approve" value="{{$approve}}" /></div>
+ {{else}}
+ <p>{{$no_pending}}</p>
+ {{/if}}
+
+
+
+
+ <h3>{{$h_users}}</h3>
+ {{if $users}}
+ <table id='users'>
+ <thead>
+ <tr>
+ <th></th>
+ {{foreach $th_users as $th}}<th>{{$th}}</th>{{/foreach}}
+ <th></th>
+ <th></th>
+ </tr>
+ </thead>
+ <tbody>
+ {{foreach $users as $u}}
+ <tr>
+ <td><img src="{{$u.micro}}" alt="{{$u.nickname}}" title="{{$u.nickname}}"></td>
+ <td class='name'><a href="{{$u.url}}" title="{{$u.nickname}}" >{{$u.name}}</a></td>
+ <td class='email'>{{$u.email}}</td>
+ <td class='register_date'>{{$u.register_date}}</td>
+ <td class='login_date'>{{$u.login_date}}</td>
+ <td class='lastitem_date'>{{$u.lastitem_date}}</td>
+ <td class='login_date'>{{$u.page_flags}}</td>
+ <td class="checkbox"><input type="checkbox" class="users_ckbx" id="id_user_{{$u.uid}}" name="user[]" value="{{$u.uid}}"/></td>
+ <td class="tools">
+ <a href="{{$baseurl}}/admin/users/block/{{$u.uid}}?t={{$form_security_token}}" title='{{if $u.blocked}}{{$unblock}}{{else}}{{$block}}{{/if}}'><span class='icon block {{if $u.blocked==0}}dim{{/if}}'></span></a>
+ <a href="{{$baseurl}}/admin/users/delete/{{$u.uid}}?t={{$form_security_token}}" title='{{$delete}}' onclick="return confirm_delete('{{$u.name}}')"><span class='icon drop'></span></a>
+ </td>
+ </tr>
+ {{/foreach}}
+ </tbody>
+ </table>
+ <div class='selectall'><a href='#' onclick="return selectall('users_ckbx');">{{$select_all}}</a></div>
+ <div class="submit"><input type="submit" name="page_users_block" value="{{$block}}/{{$unblock}}" /> <input type="submit" name="page_users_delete" value="{{$delete}}" onclick="return confirm_delete_multi()" /></div>
+ {{else}}
+ NO USERS?!?
+ {{/if}}
+ </form>
+</div>
diff --git a/view/tpl/smarty3/album_edit.tpl b/view/tpl/smarty3/album_edit.tpl
new file mode 100644
index 000000000..61653c47c
--- /dev/null
+++ b/view/tpl/smarty3/album_edit.tpl
@@ -0,0 +1,15 @@
+<div id="photo-album-edit-wrapper">
+<form name="photo-album-edit-form" id="photo-album-edit-form" action="photos/{{$nickname}}/album/{{$hexalbum}}" method="post" >
+
+
+<label id="photo-album-edit-name-label" for="photo-album-edit-name" >{{$nametext}}</label>
+<input type="text" size="64" name="albumname" value="{{$album}}" >
+
+<div id="photo-album-edit-name-end"></div>
+
+<input id="photo-album-edit-submit" type="submit" name="submit" value="{{$submit}}" />
+<input id="photo-album-edit-drop" type="submit" name="dropalbum" value="{{$dropsubmit}}" onclick="return confirmDelete();" />
+
+</form>
+</div>
+<div id="photo-album-edit-end" ></div>
diff --git a/view/tpl/smarty3/api_config_xml.tpl b/view/tpl/smarty3/api_config_xml.tpl
new file mode 100644
index 000000000..8c0766c73
--- /dev/null
+++ b/view/tpl/smarty3/api_config_xml.tpl
@@ -0,0 +1,66 @@
+<config>
+ <site>
+ <name>{{$config.site.name}}</name>
+ <server>{{$config.site.server}}</server>
+ <theme>default</theme>
+ <path></path>
+ <logo>{{$config.site.logo}}</logo>
+
+ <fancy>true</fancy>
+ <language>en</language>
+ <email>{{$config.site.email}}</email>
+ <broughtby></broughtby>
+ <broughtbyurl></broughtbyurl>
+ <timezone>UTC</timezone>
+ <closed>{{$config.site.closed}}</closed>
+
+ <inviteonly>false</inviteonly>
+ <private>{{$config.site.private}}</private>
+ <textlimit>{{$config.site.textlimit}}</textlimit>
+ <ssl>{{$config.site.ssl}}</ssl>
+ <sslserver>{{$config.site.sslserver}}</sslserver>
+ <shorturllength>30</shorturllength>
+
+</site>
+ <license>
+ <type>cc</type>
+ <owner></owner>
+ <url>http://creativecommons.org/licenses/by/3.0/</url>
+ <title>Creative Commons Attribution 3.0</title>
+ <image>http://i.creativecommons.org/l/by/3.0/80x15.png</image>
+
+</license>
+ <nickname>
+ <featured></featured>
+</nickname>
+ <profile>
+ <biolimit></biolimit>
+</profile>
+ <group>
+ <desclimit></desclimit>
+</group>
+ <notice>
+
+ <contentlimit></contentlimit>
+</notice>
+ <throttle>
+ <enabled>false</enabled>
+ <count>20</count>
+ <timespan>600</timespan>
+</throttle>
+ <xmpp>
+
+ <enabled>false</enabled>
+ <server>INVALID SERVER</server>
+ <port>5222</port>
+ <user>update</user>
+</xmpp>
+ <integration>
+ <source>StatusNet</source>
+
+</integration>
+ <attachments>
+ <uploads>false</uploads>
+ <file_quota>0</file_quota>
+</attachments>
+</config>
diff --git a/view/tpl/smarty3/api_friends_xml.tpl b/view/tpl/smarty3/api_friends_xml.tpl
new file mode 100644
index 000000000..f2a7234d1
--- /dev/null
+++ b/view/tpl/smarty3/api_friends_xml.tpl
@@ -0,0 +1,5 @@
+<users type="array">
+ {{foreach $users as $user}}
+ {{include file="api_user_xml.tpl"}}
+ {{/foreach}}
+</users>
diff --git a/view/tpl/smarty3/api_ratelimit_xml.tpl b/view/tpl/smarty3/api_ratelimit_xml.tpl
new file mode 100644
index 000000000..e4b470a25
--- /dev/null
+++ b/view/tpl/smarty3/api_ratelimit_xml.tpl
@@ -0,0 +1,6 @@
+<hash>
+ <remaining-hits type="integer">{{$hash.remaining_hits}}</remaining-hits>
+ <hourly-limit type="integer">{{$hash.hourly_limit}}</hourly-limit>
+ <reset-time type="datetime">{{$hash.reset_time}}</reset-time>
+ <reset_time_in_seconds type="integer">{{$hash.resettime_in_seconds}}</reset_time_in_seconds>
+</hash>
diff --git a/view/tpl/smarty3/api_status_xml.tpl b/view/tpl/smarty3/api_status_xml.tpl
new file mode 100644
index 000000000..cbb736e22
--- /dev/null
+++ b/view/tpl/smarty3/api_status_xml.tpl
@@ -0,0 +1,46 @@
+<status>{{if $status}}
+ <created_at>{{$status.created_at}}</created_at>
+ <id>{{$status.id}}</id>
+ <text>{{$status.text}}</text>
+ <source>{{$status.source}}</source>
+ <truncated>{{$status.truncated}}</truncated>
+ <in_reply_to_status_id>{{$status.in_reply_to_status_id}}</in_reply_to_status_id>
+ <in_reply_to_user_id>{{$status.in_reply_to_user_id}}</in_reply_to_user_id>
+ <favorited>{{$status.favorited}}</favorited>
+ <in_reply_to_screen_name>{{$status.in_reply_to_screen_name}}</in_reply_to_screen_name>
+ <geo>{{$status.geo}}</geo>
+ <coordinates>{{$status.coordinates}}</coordinates>
+ <place>{{$status.place}}</place>
+ <contributors>{{$status.contributors}}</contributors>
+ <user>
+ <id>{{$status.user.id}}</id>
+ <name>{{$status.user.name}}</name>
+ <screen_name>{{$status.user.screen_name}}</screen_name>
+ <location>{{$status.user.location}}</location>
+ <description>{{$status.user.description}}</description>
+ <profile_image_url>{{$status.user.profile_image_url}}</profile_image_url>
+ <url>{{$status.user.url}}</url>
+ <protected>{{$status.user.protected}}</protected>
+ <followers_count>{{$status.user.followers}}</followers_count>
+ <profile_background_color>{{$status.user.profile_background_color}}</profile_background_color>
+ <profile_text_color>{{$status.user.profile_text_color}}</profile_text_color>
+ <profile_link_color>{{$status.user.profile_link_color}}</profile_link_color>
+ <profile_sidebar_fill_color>{{$status.user.profile_sidebar_fill_color}}</profile_sidebar_fill_color>
+ <profile_sidebar_border_color>{{$status.user.profile_sidebar_border_color}}</profile_sidebar_border_color>
+ <friends_count>{{$status.user.friends_count}}</friends_count>
+ <created_at>{{$status.user.created_at}}</created_at>
+ <favourites_count>{{$status.user.favourites_count}}</favourites_count>
+ <utc_offset>{{$status.user.utc_offset}}</utc_offset>
+ <time_zone>{{$status.user.time_zone}}</time_zone>
+ <profile_background_image_url>{{$status.user.profile_background_image_url}}</profile_background_image_url>
+ <profile_background_tile>{{$status.user.profile_background_tile}}</profile_background_tile>
+ <profile_use_background_image>{{$status.user.profile_use_background_image}}</profile_use_background_image>
+ <notifications></notifications>
+ <geo_enabled>{{$status.user.geo_enabled}}</geo_enabled>
+ <verified>{{$status.user.verified}}</verified>
+ <following></following>
+ <statuses_count>{{$status.user.statuses_count}}</statuses_count>
+ <lang>{{$status.user.lang}}</lang>
+ <contributors_enabled>{{$status.user.contributors_enabled}}</contributors_enabled>
+ </user>
+{{/if}}</status>
diff --git a/view/tpl/smarty3/api_test_xml.tpl b/view/tpl/smarty3/api_test_xml.tpl
new file mode 100644
index 000000000..80a541c39
--- /dev/null
+++ b/view/tpl/smarty3/api_test_xml.tpl
@@ -0,0 +1 @@
+<ok>{{$ok}}</ok>
diff --git a/view/tpl/smarty3/api_timeline_atom.tpl b/view/tpl/smarty3/api_timeline_atom.tpl
new file mode 100644
index 000000000..e8bfb689e
--- /dev/null
+++ b/view/tpl/smarty3/api_timeline_atom.tpl
@@ -0,0 +1,90 @@
+<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/">
+ <generator uri="http://status.net" version="0.9.7">StatusNet</generator>
+ <id>{{$rss.self}}</id>
+ <title>Friendika</title>
+ <subtitle>Friendika API feed</subtitle>
+ <logo>{{$rss.logo}}</logo>
+ <updated>{{$rss.atom_updated}}</updated>
+ <link type="text/html" rel="alternate" href="{{$rss.alternate}}"/>
+ <link type="application/atom+xml" rel="self" href="{{$rss.self}}"/>
+
+
+ <author>
+ <activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type>
+ <uri>{{$user.url}}</uri>
+ <name>{{$user.name}}</name>
+ <link rel="alternate" type="text/html" href="{{$user.url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="106" media:height="106" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="{{$user.profile_image_url}}"/>
+ <georss:point></georss:point>
+ <poco:preferredUsername>{{$user.screen_name}}</poco:preferredUsername>
+ <poco:displayName>{{$user.name}}</poco:displayName>
+ <poco:urls>
+ <poco:type>homepage</poco:type>
+ <poco:value>{{$user.url}}</poco:value>
+ <poco:primary>true</poco:primary>
+ </poco:urls>
+ <statusnet:profile_info local_id="{{$user.id}}"></statusnet:profile_info>
+ </author>
+
+ <!--Deprecation warning: activity:subject is present only for backward compatibility. It will be removed in the next version of StatusNet.-->
+ <activity:subject>
+ <activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type>
+ <id>{{$user.contact_url}}</id>
+ <title>{{$user.name}}</title>
+ <link rel="alternate" type="text/html" href="{{$user.url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="106" media:height="106" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="96" media:height="96" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$user.profile_image_url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="24" media:height="24" href="{{$user.profile_image_url}}"/>
+ <poco:preferredUsername>{{$user.screen_name}}</poco:preferredUsername>
+ <poco:displayName>{{$user.name}}</poco:displayName>
+ <poco:urls>
+ <poco:type>homepage</poco:type>
+ <poco:value>{{$user.url}}</poco:value>
+ <poco:primary>true</poco:primary>
+ </poco:urls>
+ <statusnet:profile_info local_id="{{$user.id}}"></statusnet:profile_info>
+ </activity:subject>
+
+
+ {{foreach $statuses as $status}}
+ <entry>
+ <activity:obj_type>{{$status.objecttype}}</activity:obj_type>
+ <id>{{$status.message_id}}</id>
+ <title>{{$status.text}}</title>
+ <content type="html">{{$status.statusnet_html}}</content>
+ <link rel="alternate" type="text/html" href="{{$status.url}}"/>
+ <activity:verb>{{$status.verb}}</activity:verb>
+ <published>{{$status.published}}</published>
+ <updated>{{$status.updated}}</updated>
+
+ <link rel="self" type="application/atom+xml" href="{{$status.self}}"/>
+ <link rel="edit" type="application/atom+xml" href="{{$status.edit}}"/>
+ <statusnet:notice_info local_id="{{$status.id}}" source="{{$status.source}}" >
+ </statusnet:notice_info>
+
+ <author>
+ <activity:obj_type>http://activitystrea.ms/schema/1.0/person</activity:obj_type>
+ <uri>{{$status.user.url}}</uri>
+ <name>{{$status.user.name}}</name>
+ <link rel="alternate" type="text/html" href="{{$status.user.url}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="48" media:height="48" href="{{$status.user.profile_image_url}}"/>
+
+ <georss:point/>
+ <poco:preferredUsername>{{$status.user.screen_name}}</poco:preferredUsername>
+ <poco:displayName>{{$status.user.name}}</poco:displayName>
+ <poco:address/>
+ <poco:urls>
+ <poco:type>homepage</poco:type>
+ <poco:value>{{$status.user.url}}</poco:value>
+ <poco:primary>true</poco:primary>
+ </poco:urls>
+ </author>
+ <link rel="ostatus:conversation" type="text/html" href="{{$status.url}}"/>
+
+ </entry>
+ {{/foreach}}
+</feed>
diff --git a/view/tpl/smarty3/api_timeline_rss.tpl b/view/tpl/smarty3/api_timeline_rss.tpl
new file mode 100644
index 000000000..86c645e99
--- /dev/null
+++ b/view/tpl/smarty3/api_timeline_rss.tpl
@@ -0,0 +1,26 @@
+<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:georss="http://www.georss.org/georss" xmlns:twitter="http://api.twitter.com">
+ <channel>
+ <title>Friendika</title>
+ <link>{{$rss.alternate}}</link>
+ <atom:link type="application/rss+xml" rel="self" href="{{$rss.self}}"/>
+ <description>Friendika timeline</description>
+ <language>{{$rss.language}}</language>
+ <ttl>40</ttl>
+ <image>
+ <link>{{$user.link}}</link>
+ <title>{{$user.name}}'s items</title>
+ <url>{{$user.profile_image_url}}</url>
+ </image>
+
+{{foreach $statuses as $status}}
+ <item>
+ <title>{{$status.user.name}}: {{$status.text}}</title>
+ <description>{{$status.text}}</description>
+ <pubDate>{{$status.created_at}}</pubDate>
+ <guid>{{$status.url}}</guid>
+ <link>{{$status.url}}</link>
+ <twitter:source>{{$status.source}}</twitter:source>
+ </item>
+{{/foreach}}
+ </channel>
+</rss>
diff --git a/view/tpl/smarty3/api_timeline_xml.tpl b/view/tpl/smarty3/api_timeline_xml.tpl
new file mode 100644
index 000000000..f14d73e9c
--- /dev/null
+++ b/view/tpl/smarty3/api_timeline_xml.tpl
@@ -0,0 +1,20 @@
+<statuses type="array" xmlns:statusnet="http://status.net/schema/api/1/">
+{{foreach $statuses as $status}} <status>
+ <text>{{$status.text}}</text>
+ <truncated>{{$status.truncated}}</truncated>
+ <created_at>{{$status.created_at}}</created_at>
+ <in_reply_to_status_id>{{$status.in_reply_to_status_id}}</in_reply_to_status_id>
+ <source>{{$status.source}}</source>
+ <id>{{$status.id}}</id>
+ <in_reply_to_user_id>{{$status.in_reply_to_user_id}}</in_reply_to_user_id>
+ <in_reply_to_screen_name>{{$status.in_reply_to_screen_name}}</in_reply_to_screen_name>
+ <geo>{{$status.geo}}</geo>
+ <favorited>{{$status.favorited}}</favorited>
+{{include file="api_user_xml.tpl" user=$status.user}} <statusnet:html>{{$status.statusnet_html}}</statusnet:html>
+ <statusnet:conversation_id>{{$status.statusnet_conversation_id}}</statusnet:conversation_id>
+ <url>{{$status.url}}</url>
+ <coordinates>{{$status.coordinates}}</coordinates>
+ <place>{{$status.place}}</place>
+ <contributors>{{$status.contributors}}</contributors>
+ </status>
+{{/foreach}}</statuses>
diff --git a/view/tpl/smarty3/api_user_xml.tpl b/view/tpl/smarty3/api_user_xml.tpl
new file mode 100644
index 000000000..3b51992f6
--- /dev/null
+++ b/view/tpl/smarty3/api_user_xml.tpl
@@ -0,0 +1,46 @@
+ <user>
+ <id>{{$user.id}}</id>
+ <name>{{$user.name}}</name>
+ <screen_name>{{$user.screen_name}}</screen_name>
+ <location>{{$user.location}}</location>
+ <description>{{$user.description}}</description>
+ <profile_image_url>{{$user.profile_image_url}}</profile_image_url>
+ <url>{{$user.url}}</url>
+ <protected>{{$user.protected}}</protected>
+ <followers_count>{{$user.followers_count}}</followers_count>
+ <friends_count>{{$user.friends_count}}</friends_count>
+ <created_at>{{$user.created_at}}</created_at>
+ <favourites_count>{{$user.favourites_count}}</favourites_count>
+ <utc_offset>{{$user.utc_offset}}</utc_offset>
+ <time_zone>{{$user.time_zone}}</time_zone>
+ <statuses_count>{{$user.statuses_count}}</statuses_count>
+ <following>{{$user.following}}</following>
+ <profile_background_color>{{$user.profile_background_color}}</profile_background_color>
+ <profile_text_color>{{$user.profile_text_color}}</profile_text_color>
+ <profile_link_color>{{$user.profile_link_color}}</profile_link_color>
+ <profile_sidebar_fill_color>{{$user.profile_sidebar_fill_color}}</profile_sidebar_fill_color>
+ <profile_sidebar_border_color>{{$user.profile_sidebar_border_color}}</profile_sidebar_border_color>
+ <profile_background_image_url>{{$user.profile_background_image_url}}</profile_background_image_url>
+ <profile_background_tile>{{$user.profile_background_tile}}</profile_background_tile>
+ <profile_use_background_image>{{$user.profile_use_background_image}}</profile_use_background_image>
+ <notifications>{{$user.notifications}}</notifications>
+ <geo_enabled>{{$user.geo_enabled}}</geo_enabled>
+ <verified>{{$user.verified}}</verified>
+ <lang>{{$user.lang}}</lang>
+ <contributors_enabled>{{$user.contributors_enabled}}</contributors_enabled>
+ <status>{{if $user.status}}
+ <created_at>{{$user.status.created_at}}</created_at>
+ <id>{{$user.status.id}}</id>
+ <text>{{$user.status.text}}</text>
+ <source>{{$user.status.source}}</source>
+ <truncated>{{$user.status.truncated}}</truncated>
+ <in_reply_to_status_id>{{$user.status.in_reply_to_status_id}}</in_reply_to_status_id>
+ <in_reply_to_user_id>{{$user.status.in_reply_to_user_id}}</in_reply_to_user_id>
+ <favorited>{{$user.status.favorited}}</favorited>
+ <in_reply_to_screen_name>{{$user.status.in_reply_to_screen_name}}</in_reply_to_screen_name>
+ <geo>{{$user.status.geo}}</geo>
+ <coordinates>{{$user.status.coordinates}}</coordinates>
+ <place>{{$user.status.place}}</place>
+ <contributors>{{$user.status.contributors}}</contributors>
+ {{/if}}</status>
+ </user>
diff --git a/view/tpl/smarty3/apps.tpl b/view/tpl/smarty3/apps.tpl
new file mode 100644
index 000000000..335e0ca97
--- /dev/null
+++ b/view/tpl/smarty3/apps.tpl
@@ -0,0 +1,7 @@
+<h3>{{$title}}</h3>
+
+<ul>
+ {{foreach $apps as $ap}}
+ <li>{{$ap}}</li>
+ {{/foreach}}
+</ul>
diff --git a/view/tpl/smarty3/atom_feed.tpl b/view/tpl/smarty3/atom_feed.tpl
new file mode 100644
index 000000000..ccb85a48a
--- /dev/null
+++ b/view/tpl/smarty3/atom_feed.tpl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<feed xmlns="http://www.w3.org/2005/Atom"
+ xmlns:thr="http://purl.org/syndication/thread/1.0"
+ xmlns:at="http://purl.org/atompub/tombstones/1.0"
+ xmlns:media="http://purl.org/syndication/atommedia"
+ xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0"
+ xmlns:as="http://activitystrea.ms/spec/1.0/"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:poco="http://portablecontacts.net/spec/1.0"
+ xmlns:ostatus="http://ostatus.org/schema/1.0"
+ xmlns:statusnet="http://status.net/schema/api/1/" >
+
+ <id>{{$feed_id}}</id>
+ <title>{{$feed_title}}</title>
+ <generator uri="http://friendica.com" version="{{$version}}">Friendica</generator>
+ <link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
+ {{$hub}}
+ {{$salmon}}
+ {{$community}}
+
+ <updated>{{$feed_updated}}</updated>
+
+ <dfrn:owner>
+ <name dfrn:updated="{{$namdate}}" >{{$name}}</name>
+ <uri dfrn:updated="{{$uridate}}" >{{$profile_page}}</uri>
+ <link rel="photo" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
+ <link rel="avatar" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
+ {{$birthday}}
+ </dfrn:owner>
diff --git a/view/tpl/smarty3/atom_feed_dfrn.tpl b/view/tpl/smarty3/atom_feed_dfrn.tpl
new file mode 100644
index 000000000..307001fbe
--- /dev/null
+++ b/view/tpl/smarty3/atom_feed_dfrn.tpl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<feed xmlns="http://www.w3.org/2005/Atom"
+ xmlns:thr="http://purl.org/syndication/thread/1.0"
+ xmlns:at="http://purl.org/atompub/tombstones/1.0"
+ xmlns:media="http://purl.org/syndication/atommedia"
+ xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0"
+ xmlns:as="http://activitystrea.ms/spec/1.0/"
+ xmlns:georss="http://www.georss.org/georss"
+ xmlns:poco="http://portablecontacts.net/spec/1.0"
+ xmlns:ostatus="http://ostatus.org/schema/1.0"
+ xmlns:statusnet="http://status.net/schema/api/1/" >
+
+ <id>{{$feed_id}}</id>
+ <title>{{$feed_title}}</title>
+ <generator uri="http://friendica.com" version="{{$version}}">Friendica</generator>
+ <link rel="license" href="http://creativecommons.org/licenses/by/3.0/" />
+ {{$hub}}
+ {{$salmon}}
+ {{$community}}
+
+ <updated>{{$feed_updated}}</updated>
+
+ <author>
+ <name dfrn:updated="{{$namdate}}" >{{$name}}</name>
+ <uri dfrn:updated="{{$uridate}}" >{{$profile_page}}</uri>
+ <link rel="photo" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
+ <link rel="avatar" type="image/jpeg" dfrn:updated="{{$picdate}}" media:width="175" media:height="175" href="{{$photo}}" />
+ {{$birthday}}
+ </author>
diff --git a/view/tpl/smarty3/atom_mail.tpl b/view/tpl/smarty3/atom_mail.tpl
new file mode 100644
index 000000000..9b843f585
--- /dev/null
+++ b/view/tpl/smarty3/atom_mail.tpl
@@ -0,0 +1,17 @@
+
+<dfrn:mail>
+
+ <dfrn:sender>
+ <dfrn:name>{{$name}}</dfrn:name>
+ <dfrn:uri>{{$profile_page}}</dfrn:uri>
+ <dfrn:avatar>{{$thumb}}</dfrn:avatar>
+ </dfrn:sender>
+
+ <dfrn:id>{{$item_id}}</dfrn:id>
+ <dfrn:in-reply-to>{{$parent_id}}</dfrn:in-reply-to>
+ <dfrn:sentdate>{{$created}}</dfrn:sentdate>
+ <dfrn:subject>{{$subject}}</dfrn:subject>
+ <dfrn:content>{{$content}}</dfrn:content>
+
+</dfrn:mail>
+
diff --git a/view/tpl/smarty3/atom_suggest.tpl b/view/tpl/smarty3/atom_suggest.tpl
new file mode 100644
index 000000000..972b9bc0b
--- /dev/null
+++ b/view/tpl/smarty3/atom_suggest.tpl
@@ -0,0 +1,11 @@
+
+<dfrn:suggest>
+
+ <dfrn:url>{{$url}}</dfrn:url>
+ <dfrn:name>{{$name}}</dfrn:name>
+ <dfrn:photo>{{$photo}}</dfrn:photo>
+ <dfrn:request>{{$request}}</dfrn:request>
+ <dfrn:note>{{$note}}</dfrn:note>
+
+</dfrn:suggest>
+
diff --git a/view/tpl/smarty3/auto_request.tpl b/view/tpl/smarty3/auto_request.tpl
new file mode 100644
index 000000000..dfc5a4c80
--- /dev/null
+++ b/view/tpl/smarty3/auto_request.tpl
@@ -0,0 +1,37 @@
+
+<h1>{{$header}}</h1>
+
+<p id="dfrn-request-intro">
+{{$page_desc}}<br />
+<ul id="dfrn-request-networks">
+<li><a href="http://friendica.com" title="{{$friendica}}">{{$friendica}}</a></li>
+<li><a href="http://joindiaspora.com" title="{{$diaspora}}">{{$diaspora}}</a> {{$diasnote}}</li>
+<li><a href="http://ostatus.org" title="{{$public_net}}" >{{$statusnet}}</a></li>
+{{if $emailnet}}<li>{{$emailnet}}</li>{{/if}}
+</ul>
+</p>
+<p>
+{{$invite_desc}}
+</p>
+<p>
+{{$desc}}
+</p>
+
+<form action="dfrn_request/{{$nickname}}" method="post" />
+
+<div id="dfrn-request-url-wrapper" >
+ <label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label>
+ <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr}}" />
+ <div id="dfrn-request-url-end"></div>
+</div>
+
+
+<div id="dfrn-request-info-wrapper" >
+
+</div>
+
+ <div id="dfrn-request-submit-wrapper">
+ <input type="submit" name="submit" id="dfrn-request-submit-button" value="{{$submit}}" />
+ <input type="submit" name="cancel" id="dfrn-request-cancel-button" value="{{$cancel}}" />
+ </div>
+</form>
diff --git a/view/tpl/smarty3/birthdays_reminder.tpl b/view/tpl/smarty3/birthdays_reminder.tpl
new file mode 100644
index 000000000..d0500364a
--- /dev/null
+++ b/view/tpl/smarty3/birthdays_reminder.tpl
@@ -0,0 +1,10 @@
+{{if $count}}
+<div id="birthday-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('birthday-wrapper');">{{$event_reminders}} ({{$count}})</div>
+<div id="birthday-wrapper" style="display: none;" ><div id="birthday-title">{{$event_title}}</div>
+<div id="birthday-title-end"></div>
+{{foreach $events as $event}}
+<div class="birthday-list" id="birthday-{{$event.id}}"></a> <a href="{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div>
+{{/foreach}}
+</div>
+{{/if}}
+
diff --git a/view/tpl/smarty3/categories_widget.tpl b/view/tpl/smarty3/categories_widget.tpl
new file mode 100644
index 000000000..2c0b3bcc2
--- /dev/null
+++ b/view/tpl/smarty3/categories_widget.tpl
@@ -0,0 +1,12 @@
+<div id="categories-sidebar" class="widget">
+ <h3>{{$title}}</h3>
+ <div id="categories-sidebar-desc">{{$desc}}</div>
+
+ <ul class="categories-ul">
+ <li class="tool"><a href="{{$base}}" class="categories-link categories-all{{if $sel_all}} categories-selected{{/if}}">{{$all}}</a></li>
+ {{foreach $terms as $term}}
+ <li class="tool"><a href="{{$base}}?f=&cat={{$term.name}}" class="categories-link{{if $term.selected}} categories-selected{{/if}}">{{$term.name}}</a></li>
+ {{/foreach}}
+ </ul>
+
+</div>
diff --git a/view/tpl/smarty3/channel.tpl b/view/tpl/smarty3/channel.tpl
new file mode 100644
index 000000000..d6462d1e4
--- /dev/null
+++ b/view/tpl/smarty3/channel.tpl
@@ -0,0 +1,12 @@
+<div class="channel-selection">
+{{if $channel.default_links}}
+{{if $channel.default}}
+<div class="channel-selection-default default">{{$msg_default}}</div>
+{{else}}
+<div class="channel-selection-default"><a href="manage/{{$channel.channel_id}}/default">{{$msg_make_default}}</a></div>
+{{/if}}
+{{/if}}
+<a href="{{$channel.link}}" class="channel-selection-photo-link" title="{{$channel.channel_name}}"><img class="channel-photo" src="{{$channel.xchan_photo_m}}" alt="{{$channel.channel_name}}" /></a>
+<a href="{{$channel.link}}" class="channel-selection-name-link" title="{{$channel.channel_name}}"><div class="channel-name">{{$channel.channel_name}}</div></a>
+</div>
+<div class="channel-selection-end"></div>
diff --git a/view/tpl/smarty3/channels.tpl b/view/tpl/smarty3/channels.tpl
new file mode 100644
index 000000000..a3acaac06
--- /dev/null
+++ b/view/tpl/smarty3/channels.tpl
@@ -0,0 +1,22 @@
+<h3>{{$header}}</h3>
+
+
+{{if $links}}
+{{foreach $links as $l}}
+<a class="channels-links" href="{{$l.0}}" title="{{$l.1}}">{{$l.2}}</a>
+{{/foreach}}
+{{/if}}
+
+{{if $selected}}
+<div id="channels-selected">{{$msg_selected}}</div>
+{{include file="channel.tpl" channel=$selected}}
+<div class="channels-end selected"></div>
+{{/if}}
+
+<div id="channels-desc" class="descriptive-text">{{$desc}}</div>
+
+{{foreach $all_channels as $chn}}
+{{include file="channel.tpl" channel=$chn}}
+{{/foreach}}
+
+<div class="channels-end all"></div>
diff --git a/view/tpl/smarty3/comment_item.tpl b/view/tpl/smarty3/comment_item.tpl
new file mode 100644
index 000000000..1f67dba47
--- /dev/null
+++ b/view/tpl/smarty3/comment_item.tpl
@@ -0,0 +1,68 @@
+ {{if $threaded}}
+ <div class="comment-wwedit-wrapper threaded" id="comment-edit-wrapper-{{$id}}" style="display: block;">
+ {{else}}
+ <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-{{$id}}" style="display: block;">
+ {{/if}}
+ <form class="comment-edit-form" style="display: block;" id="comment-edit-form-{{$id}}" action="item" method="post" onsubmit="post_comment({{$id}}); return false;">
+ <input type="hidden" name="type" value="{{$type}}" />
+ <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
+ <input type="hidden" name="parent" value="{{$parent}}" />
+ <input type="hidden" name="return" value="{{$return_path}}" />
+ <input type="hidden" name="jsreload" value="{{$jsreload}}" />
+ <input type="hidden" name="preview" id="comment-preview-inp-{{$id}}" value="0" />
+ <input type="hidden" name="post_id_random" value="{{$rand_num}}" />
+
+ <div class="comment-edit-photo" id="comment-edit-photo-{{$id}}" >
+ <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
+ </div>
+ <div class="comment-edit-photo-end"></div>
+ <ul class="comment-edit-bb-{{$id}}">
+ <li><a class="editicon boldbb shadow"
+ style="cursor: pointer;" title="{{$edbold}}"
+ onclick="insertFormatting('{{$comment}}','b', {{$id}});"></a></li>
+ <li><a class="editicon italicbb shadow"
+ style="cursor: pointer;" title="{{$editalic}}"
+ onclick="insertFormatting('{{$comment}}','i', {{$id}});"></a></li>
+ <li><a class="editicon underlinebb shadow"
+ style="cursor: pointer;" title="{{$eduline}}"
+ onclick="insertFormatting('{{$comment}}','u', {{$id}});"></a></li>
+ <li><a class="editicon quotebb shadow"
+ style="cursor: pointer;" title="{{$edquote}}"
+ onclick="insertFormatting('{{$comment}}','quote', {{$id}});"></a></li>
+ <li><a class="editicon codebb shadow"
+ style="cursor: pointer;" title="{{$edcode}}"
+ onclick="insertFormatting('{{$comment}}','code', {{$id}});"></a></li>
+ <li><a class="editicon imagebb shadow"
+ style="cursor: pointer;" title="{{$edimg}}"
+ onclick="insertFormatting('{{$comment}}','img', {{$id}});"></a></li>
+ <li><a class="editicon urlbb shadow"
+ style="cursor: pointer;" title="{{$edurl}}"
+ onclick="insertFormatting('{{$comment}}','url', {{$id}});"></a></li>
+ <li><a class="editicon videobb shadow"
+ style="cursor: pointer;" title="{{$edvideo}}"
+ onclick="insertFormatting('{{$comment}}','video', {{$id}});"></a></li>
+ </ul>
+ <div class="comment-edit-bb-end"></div>
+ <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,{{$id}});cmtBbOpen(this, {{$id}});" onBlur="commentClose(this,{{$id}});cmtBbClose(this,{{$id}});" >{{$comment}}</textarea>
+ {{if $qcomment}}
+ <select id="qcomment-select-{{$id}}" name="qcomment-{{$id}}" class="qcomment" onchange="qCommentInsert(this,{{$id}});" >
+ <option value=""></option>
+ {{foreach $qcomment as $qc}}
+ <option value="{{$qc}}">{{$qc}}</option>
+ {{/foreach}}
+ </select>
+ {{/if}}
+
+ <div class="comment-edit-text-end"></div>
+ <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" >
+ <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" />
+ {{if $preview}}
+ <span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>
+ <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
+ {{/if}}
+ </div>
+
+ <div class="comment-edit-end"></div>
+ </form>
+
+ </div>
diff --git a/view/tpl/smarty3/common_friends.tpl b/view/tpl/smarty3/common_friends.tpl
new file mode 100644
index 000000000..9adb30b71
--- /dev/null
+++ b/view/tpl/smarty3/common_friends.tpl
@@ -0,0 +1,12 @@
+<div class="profile-match-wrapper">
+ <div class="profile-match-photo">
+ <a href="{{$url}}">
+ <img src="{{$photo}}" alt="{{$name}}" width="80" height="80" title="{{$name}} [{{$url}}]" />
+ </a>
+ </div>
+ <div class="profile-match-break"></div>
+ <div class="profile-match-name">
+ <a href="{{$url}}" title="{{$name}}[{{$tags}}]">{{$name}}</a>
+ </div>
+ <div class="profile-match-end"></div>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/common_tabs.tpl b/view/tpl/smarty3/common_tabs.tpl
new file mode 100644
index 000000000..ef8b3d356
--- /dev/null
+++ b/view/tpl/smarty3/common_tabs.tpl
@@ -0,0 +1,5 @@
+<ul class="tabs">
+ {{foreach $tabs as $tab}}
+ <li {{if $tab.id}}id="{{$tab.id}}"{{/if}}><a href="{{$tab.url}}" class="tab button {{$tab.sel}}"{{if $tab.title}} title="{{$tab.title}}"{{/if}}>{{$tab.label}}</a></li>
+ {{/foreach}}
+</ul>
diff --git a/view/tpl/smarty3/contact_block.tpl b/view/tpl/smarty3/contact_block.tpl
new file mode 100644
index 000000000..e688af287
--- /dev/null
+++ b/view/tpl/smarty3/contact_block.tpl
@@ -0,0 +1,12 @@
+<div id="contact-block">
+<h4 class="contact-block-h4">{{$contacts}}</h4>
+{{if $micropro}}
+ <a class="allcontact-link" href="viewcontacts/{{$nickname}}">{{$viewcontacts}}</a>
+ <div class='contact-block-content'>
+ {{foreach $micropro as $m}}
+ {{$m}}
+ {{/foreach}}
+ </div>
+{{/if}}
+</div>
+<div class="clear"></div>
diff --git a/view/tpl/smarty3/contact_edit.tpl b/view/tpl/smarty3/contact_edit.tpl
new file mode 100644
index 000000000..9f7420c0d
--- /dev/null
+++ b/view/tpl/smarty3/contact_edit.tpl
@@ -0,0 +1,89 @@
+
+<h2>{{$header}}</h2>
+
+<div id="contact-edit-wrapper" >
+
+ {{$tab_str}}
+
+ <div id="contact-edit-drop-link" >
+ <a href="contacts/{{$contact_id}}/drop" class="icon drophide" id="contact-edit-drop-link" onclick="return confirmDelete();" title="{{$delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
+ </div>
+
+ <div id="contact-edit-drop-link-end"></div>
+
+
+ <div id="contact-edit-nav-wrapper" >
+ <div id="contact-edit-links">
+ <ul>
+ <li><div id="contact-edit-rel">{{$relation_text}}</div></li>
+ <li><div id="contact-edit-nettype">{{$nettype}}</div></li>
+ {{if $lost_contact}}
+ <li><div id="lost-contact-message">{{$lost_contact}}</div></li>
+ {{/if}}
+ {{if $insecure}}
+ <li><div id="insecure-message">{{$insecure}}</div></li>
+ {{/if}}
+ {{if $blocked}}
+ <li><div id="block-message">{{$blocked}}</div></li>
+ {{/if}}
+ {{if $ignored}}
+ <li><div id="ignore-message">{{$ignored}}</div></li>
+ {{/if}}
+ {{if $archived}}
+ <li><div id="archive-message">{{$archived}}</div></li>
+ {{/if}}
+
+ <li>&nbsp;</li>
+
+ {{if $common_text}}
+ <li><div id="contact-edit-common"><a href="{{$common_link}}">{{$common_text}}</a></div></li>
+ {{/if}}
+ {{if $all_friends}}
+ <li><div id="contact-edit-allfriends"><a href="allfriends/{{$contact_id}}">{{$all_friends}}</a></div></li>
+ {{/if}}
+
+
+ <li><a href="network/?cid={{$contact_id}}" id="contact-edit-view-recent">{{$lblrecent}}</a></li>
+ {{if $lblsuggest}}
+ <li><a href="fsuggest/{{$contact_id}}" id="contact-edit-suggest">{{$lblsuggest}}</a></li>
+ {{/if}}
+
+ </ul>
+ </div>
+ </div>
+ <div id="contact-edit-nav-end"></div>
+
+
+<form action="contacts/{{$contact_id}}" method="post" >
+<input type="hidden" name="contact_id" value="{{$contact_id}}">
+<input id="contact-closeness-mirror" type="hidden" name="closeness" value="{{$close}}" />
+
+ {{if $poll_enabled}}
+ <div id="contact-edit-poll-wrapper">
+ <div id="contact-edit-last-update-text">{{$lastupdtext}} <span id="contact-edit-last-updated">{{$last_update}}</span></div>
+ <span id="contact-edit-poll-text">{{$updpub}}</span> {{$poll_interval}} <span id="contact-edit-update-now" class="button"><a href="contacts/{{$contact_id}}/update" >{{$udnow}}</a></span>
+ </div>
+ {{/if}}
+ <div id="contact-edit-end" ></div>
+
+ {{include file="field_checkbox.tpl" field=$hidden}}
+
+<div id="contact-edit-info-wrapper">
+<h4>{{$lbl_info1}}</h4>
+ <textarea id="contact-edit-info" rows="8" cols="60" name="info">{{$info}}</textarea>
+ <input class="contact-edit-submit" type="submit" name="submit" value="{{$submit}}" />
+</div>
+<div id="contact-edit-info-end"></div>
+
+
+<div id="contact-edit-profile-select-text">
+<h4>{{$lbl_vis1}}</h4>
+<p>{{$lbl_vis2}}</p>
+</div>
+{{$profile_select}}
+<div id="contact-edit-profile-select-end"></div>
+
+<input class="contact-edit-submit" type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+</div>
diff --git a/view/tpl/smarty3/contact_head.tpl b/view/tpl/smarty3/contact_head.tpl
new file mode 100644
index 000000000..72e7edbfb
--- /dev/null
+++ b/view/tpl/smarty3/contact_head.tpl
@@ -0,0 +1,30 @@
+<script language="javascript" type="text/javascript"
+ src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+ <script language="javascript" type="text/javascript">
+
+tinyMCE.init({
+ theme : "advanced",
+ mode : "{{$editselect}}",
+ elements: "contact-edit-info",
+ plugins : "bbcode",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_styles : "blockquote,code",
+ gecko_spellcheck : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ content_css: "{{$baseurl}}/view/custom_tinymce.css"
+
+
+});
+
+
+</script>
+
diff --git a/view/tpl/smarty3/contact_slider.tpl b/view/tpl/smarty3/contact_slider.tpl
new file mode 100644
index 000000000..33cd3fb71
--- /dev/null
+++ b/view/tpl/smarty3/contact_slider.tpl
@@ -0,0 +1,4 @@
+<div id="contact-slider" class="slider" style="height: 32px; position: relative; left: 5%; width: 90%;"><input id="contact-range" type="text" name="fake-closeness" value="{{$val}}" /></div>
+<script>
+ $("#contact-range").slider({ from: 0, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], onstatechange: function(v) { $("#contact-closeness-mirror").val(v); } });
+</script>
diff --git a/view/tpl/smarty3/contact_template.tpl b/view/tpl/smarty3/contact_template.tpl
new file mode 100644
index 000000000..31b42fe87
--- /dev/null
+++ b/view/tpl/smarty3/contact_template.tpl
@@ -0,0 +1,17 @@
+
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-{{$contact.id}}" >
+ <div class="contact-entry-photo-wrapper" >
+ <div class="contact-entry-photo mframe" id="contact-entry-photo-{{$contact.id}}"
+ onmouseover="if (typeof t{{$contact.id}} != 'undefined') clearTimeout(t{{$contact.id}}); openMenu('contact-photo-menu-button-{{$contact.id}}')"
+ onmouseout="t{{$contact.id}}=setTimeout('closeMenu(\'contact-photo-menu-button-{{$contact.id}}\'); closeMenu(\'contact-photo-menu-{{$contact.id}}\');',200)" >
+
+ <a href="{{$contact.edit}}" title="{{$contact.img_hover}}" /><img src="{{$contact.thumb}}" {{$contact.sparkle}} alt="{{$contact.name}}" /></a>
+
+ </div>
+
+ </div>
+ <div class="contact-entry-photo-end" ></div>
+ <div class="contact-entry-name" id="contact-entry-name-{{$contact.id}}" >{{$contact.name}}</div>
+
+ <div class="contact-entry-end" ></div>
+</div>
diff --git a/view/tpl/smarty3/contacts-template.tpl b/view/tpl/smarty3/contacts-template.tpl
new file mode 100644
index 000000000..0c7e01038
--- /dev/null
+++ b/view/tpl/smarty3/contacts-template.tpl
@@ -0,0 +1,26 @@
+<h1>{{$header}}{{if $total}} ({{$total}}){{/if}}</h1>
+
+{{if $finding}}<h4>{{$finding}}</h4>{{/if}}
+
+<div id="contacts-search-wrapper">
+<form id="contacts-search-form" action="{{$cmd}}" method="get" >
+<span class="contacts-search-desc">{{$desc}}</span>
+<input type="text" name="search" id="contacts-search" class="search-input" onfocus="this.select();" value="{{$search}}" />
+<input type="submit" name="submit" id="contacts-search-submit" value="{{$submit}}" />
+</form>
+</div>
+<div id="contacts-search-end"></div>
+
+{{$tabs}}
+
+
+{{foreach $contacts as $contact}}
+ {{include file="contact_template.tpl"}}
+{{/foreach}}
+<div id="contact-edit-end"></div>
+
+{{$paginate}}
+
+
+
+
diff --git a/view/tpl/smarty3/content.tpl b/view/tpl/smarty3/content.tpl
new file mode 100644
index 000000000..466045d39
--- /dev/null
+++ b/view/tpl/smarty3/content.tpl
@@ -0,0 +1,2 @@
+<div id="content-begin"></div>
+<div id="content-end"></div>
diff --git a/view/tpl/smarty3/conv.tpl b/view/tpl/smarty3/conv.tpl
new file mode 100644
index 000000000..ddb959b84
--- /dev/null
+++ b/view/tpl/smarty3/conv.tpl
@@ -0,0 +1,17 @@
+{{foreach $threads as $thread}}
+<div id="thread-wrapper-{{$thread.id}}" class="thread-wrapper">
+ {{foreach $thread.items as $item}}
+ {{if $item.comment_firstcollapsed}}
+ <div class="hide-comments-outer">
+ <span id="hide-comments-total-{{$thread.id}}" class="hide-comments-total">{{$thread.num_comments}}</span> <span id="hide-comments-{{$thread.id}}" class="hide-comments fakelink" onclick="showHideComments({{$thread.id}});">{{$thread.hide_text}}</span>
+ </div>
+ <div id="collapsed-comments-{{$thread.id}}" class="collapsed-comments" style="display: none;">
+ {{/if}}
+ {{if $item.comment_lastcollapsed}}</div>{{/if}}
+
+ {{include file="{{$item.template}}"}}
+
+
+ {{/foreach}}
+</div>
+{{/foreach}}
diff --git a/view/tpl/smarty3/conv_frame.tpl b/view/tpl/smarty3/conv_frame.tpl
new file mode 100644
index 000000000..7f65b64d2
--- /dev/null
+++ b/view/tpl/smarty3/conv_frame.tpl
@@ -0,0 +1,11 @@
+<div id="threads-begin"></div>
+<div id="threads-end"></div>
+<div id="conversation-end"></div>
+
+{{if $dropping}}
+<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();">
+ <div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div>
+ <div id="item-delete-selected-desc" >{{$dropping}}</div>
+</div>
+<div id="item-delete-selected-end"></div>
+{{/if}}
diff --git a/view/tpl/smarty3/conv_item.tpl b/view/tpl/smarty3/conv_item.tpl
new file mode 100644
index 000000000..01e7bcb12
--- /dev/null
+++ b/view/tpl/smarty3/conv_item.tpl
@@ -0,0 +1,121 @@
+{{if $item.comment_firstcollapsed}}
+ <div class="hide-comments-outer">
+ <span id="hide-comments-total-{{$item.id}}" class="hide-comments-total">{{$item.num_comments}}</span> <span id="hide-comments-{{$item.id}}" class="hide-comments fakelink" onclick="showHideComments({{$item.id}});">{{$item.hide_text}}</span>
+ </div>
+ <div id="collapsed-comments-{{$item.id}}" class="collapsed-comments" style="display: none;">
+{{/if}}
+<div id="thread-wrapper-{{$item.id}}" class="thread-wrapper {{$item.toplevel}}">
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}}{{if $item.owner_url}} wallwall{{/if}}" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info{{if $item.owner_url}} wallwall{{/if}}" id="wall-item-info-{{$item.id}}">
+ {{if $item.owner_url}}
+ <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-{{$item.id}}" >
+ <a href="{{$item.owner_url}}" target="redir" title="{{$item.olinktitle}}" class="wall-item-photo-link" id="wall-item-ownerphoto-link-{{$item.id}}">
+ <img src="{{$item.owner_photo}}" class="wall-item-photo{{$item.osparkle}}" id="wall-item-ownerphoto-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.owner_name}}" /></a>
+ </div>
+ <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="{{$item.wall}}" /></div>
+ {{/if}}
+ <div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}}" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" target="redir" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" /></a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}} {{$item.to}} <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a> {{$item.vwall}}{{/if}}<br />
+ <div class="wall-item-ago" id="wall-item-ago-{{$item.id}}" title="{{$item.localtime}}">{{$item.ago}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ {{if $item.has_cats}}
+ <div class="categorytags"><span>{{$item.txt_cats}} {{foreach $item.categories as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+
+ {{if $item.has_folders}}
+ <div class="filesavetags"><span>{{$item.txt_folders}} {{foreach $item.folders as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ {{if $item.like}}
+ <a href="#" class="icon like item-tool" title="{{$item.like.0}}" onclick="dolike({{$item.id}},'like'); return false"></a>
+ {{/if}}
+ {{if $item.dislike}}
+ <a href="#" class="icon dislike item-tool" title="{{$item.dislike.0}}" onclick="dolike({{$item.id}},'dislike'); return false"></a>
+ {{/if}}
+ {{if $item.share}}
+ <a href="#" class="icon recycle item-tool" title="{{$item.share.0}}" onclick="jotShare({{$item.id}}); return false"></a>
+ {{/if}}
+ {{if $item.plink}}
+ <a href="{{$item.plink.href}}" title="{{$item.plink.title}}" target="external-link" class="icon item-tool remote-link{{$item.sparkle}}"></a>
+ {{/if}}
+ {{if $item.edpost}}
+ <a class="editpost icon pencil item-tool" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"></a>
+ {{/if}}
+ {{if $item.star}}
+ <a href="#" id="starred-{{$item.id}}" onclick="dostar({{$item.id}}); return false;" class="star-item icon item-tool {{$item.star.isstarred}}" title="{{$item.star.toggle}}"></a>
+ {{/if}}
+ {{if $item.tagger}}
+ <a href="#" id="tagger-{{$item.id}}" onclick="itemTag({{$item.id}}); return false;" class="tag-item icon item-tool tagged" title="{{$item.tagger.tagit}}"></a>
+ {{/if}}
+ {{if $item.filer}}
+ <a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon item-tool" title="{{$item.filer}}"></a>
+ {{/if}}
+ <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />
+
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.pagedrop}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like {{$item.indent}}" id="wall-item-like-{{$item.id}}">{{$item.showlike}}</div>
+ <div class="wall-item-dislike {{$item.indent}}" id="wall-item-dislike-{{$item.id}}">{{$item.showdislike}}</div>
+
+ {{if $item.threaded}}
+ {{if $item.comment}}
+ <div class="wall-item-comment-wrapper {{$item.indent}}" >
+ {{$item.comment}}
+ </div>
+ {{/if}}
+ {{/if}}
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+</div>
+{{foreach $item.children as $item}}
+ {{include file="{{$item.template}}"}}
+{{/foreach}}
+
+{{if $item.flatten}}
+<div class="wall-item-comment-wrapper" >
+ {{$item.comment}}
+</div>
+{{/if}}
+</div>
+{{if $item.comment_lastcollapsed}}</div>{{/if}}
diff --git a/view/tpl/smarty3/conversation.tpl b/view/tpl/smarty3/conversation.tpl
new file mode 100644
index 000000000..8948fd474
--- /dev/null
+++ b/view/tpl/smarty3/conversation.tpl
@@ -0,0 +1,28 @@
+<div id="threads-begin"></div>
+{{foreach $threads as $thread}}
+<div id="thread-wrapper-{{$thread.id}}" class="thread-wrapper">
+ {{foreach $thread.items as $item}}
+ {{if $item.comment_firstcollapsed}}
+ <div class="hide-comments-outer">
+ <span id="hide-comments-total-{{$thread.id}}" class="hide-comments-total">{{$thread.num_comments}}</span> <span id="hide-comments-{{$thread.id}}" class="hide-comments fakelink" onclick="showHideComments({{$thread.id}});">{{$thread.hide_text}}</span>
+ </div>
+ <div id="collapsed-comments-{{$thread.id}}" class="collapsed-comments" style="display: none;">
+ {{/if}}
+ {{if $item.comment_lastcollapsed}}</div>{{/if}}
+
+ {{include file="{{$item.template}}"}}
+
+
+ {{/foreach}}
+</div>
+{{/foreach}}
+<div id="threads-end"></div>
+<div id="conversation-end"></div>
+
+{{if $dropping}}
+<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();">
+ <div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div>
+ <div id="item-delete-selected-desc" >{{$dropping}}</div>
+</div>
+<div id="item-delete-selected-end"></div>
+{{/if}}
diff --git a/view/tpl/smarty3/crepair.tpl b/view/tpl/smarty3/crepair.tpl
new file mode 100644
index 000000000..2a05b9678
--- /dev/null
+++ b/view/tpl/smarty3/crepair.tpl
@@ -0,0 +1,46 @@
+
+<form id="crepair-form" action="crepair/{{$contact_id}}" method="post" >
+
+<h4>{{$contact_name}}</h4>
+
+<label id="crepair-name-label" class="crepair-label" for="crepair-name">{{$label_name}}</label>
+<input type="text" id="crepair-name" class="crepair-input" name="name" value="{{$contact_name}}" />
+<div class="clear"></div>
+
+<label id="crepair-nick-label" class="crepair-label" for="crepair-nick">{{$label_nick}}</label>
+<input type="text" id="crepair-nick" class="crepair-input" name="nick" value="{{$contact_nick}}" />
+<div class="clear"></div>
+
+<label id="crepair-attag-label" class="crepair-label" for="crepair-attag">{{$label_attag}}</label>
+<input type="text" id="crepair-attag" class="crepair-input" name="attag" value="{{$contact_attag}}" />
+<div class="clear"></div>
+
+<label id="crepair-url-label" class="crepair-label" for="crepair-url">{{$label_url}}</label>
+<input type="text" id="crepair-url" class="crepair-input" name="url" value="{{$contact_url}}" />
+<div class="clear"></div>
+
+<label id="crepair-request-label" class="crepair-label" for="crepair-request">{{$label_request}}</label>
+<input type="text" id="crepair-request" class="crepair-input" name="request" value="{{$request}}" />
+<div class="clear"></div>
+
+<label id="crepair-confirm-label" class="crepair-label" for="crepair-confirm">{{$label_confirm}}</label>
+<input type="text" id="crepair-confirm" class="crepair-input" name="confirm" value="{{$confirm}}" />
+<div class="clear"></div>
+
+<label id="crepair-notify-label" class="crepair-label" for="crepair-notify">{{$label_notify}}</label>
+<input type="text" id="crepair-notify" class="crepair-input" name="notify" value="{{$notify}}" />
+<div class="clear"></div>
+
+<label id="crepair-poll-label" class="crepair-label" for="crepair-poll">{{$label_poll}}</label>
+<input type="text" id="crepair-poll" class="crepair-input" name="poll" value="{{$poll}}" />
+<div class="clear"></div>
+
+<label id="crepair-photo-label" class="crepair-label" for="crepair-photo">{{$label_photo}}</label>
+<input type="text" id="crepair-photo" class="crepair-input" name="photo" value="" />
+<div class="clear"></div>
+
+<input type="submit" name="submit" value="{{$lbl_submit}}" />
+
+</form>
+
+
diff --git a/view/tpl/smarty3/cropbody.tpl b/view/tpl/smarty3/cropbody.tpl
new file mode 100644
index 000000000..da5b1e859
--- /dev/null
+++ b/view/tpl/smarty3/cropbody.tpl
@@ -0,0 +1,58 @@
+<h1>{{$title}}</h1>
+<p id="cropimage-desc">
+{{$desc}}
+</p>
+<div id="cropimage-wrapper">
+<img src="{{$image_url}}" id="croppa" class="imgCrop" alt="{{$title}}" />
+</div>
+<div id="cropimage-preview-wrapper" >
+<div id="previewWrap" ></div>
+</div>
+
+<script type="text/javascript" language="javascript">
+
+ function onEndCrop( coords, dimensions ) {
+ $( 'x1' ).value = coords.x1;
+ $( 'y1' ).value = coords.y1;
+ $( 'x2' ).value = coords.x2;
+ $( 'y2' ).value = coords.y2;
+ $( 'width' ).value = dimensions.width;
+ $( 'height' ).value = dimensions.height;
+ }
+
+ Event.observe( window, 'load', function() {
+ new Cropper.ImgWithPreview(
+ 'croppa',
+ {
+ previewWrap: 'previewWrap',
+ minWidth: 175,
+ minHeight: 175,
+ maxWidth: 640,
+ maxHeight: 640,
+ ratioDim: { x: 100, y:100 },
+ displayOnInit: true,
+ onEndCrop: onEndCrop
+ }
+ );
+ }
+ );
+
+</script>
+
+<form action="profile_photo/{{$resource}}" id="crop-image-form" method="post" />
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+<input type='hidden' name='profile' value='{{$profile}}'>
+<input type="hidden" name="cropfinal" value="1" />
+<input type="hidden" name="xstart" id="x1" />
+<input type="hidden" name="ystart" id="y1" />
+<input type="hidden" name="xfinal" id="x2" />
+<input type="hidden" name="yfinal" id="y2" />
+<input type="hidden" name="height" id="height" />
+<input type="hidden" name="width" id="width" />
+
+<div id="crop-image-submit-wrapper" >
+<input type="submit" name="submit" value="{{$done}}" />
+</div>
+
+</form>
diff --git a/view/tpl/smarty3/crophead.tpl b/view/tpl/smarty3/crophead.tpl
new file mode 100644
index 000000000..48f375426
--- /dev/null
+++ b/view/tpl/smarty3/crophead.tpl
@@ -0,0 +1,4 @@
+ <script type="text/javascript" src="library/cropper/lib/prototype.js" language="javascript"></script>
+ <script type="text/javascript" src="library/cropper/lib/scriptaculous.js?load=effects,builder,dragdrop" language="javascript"></script>
+ <script type="text/javascript" src="library/cropper/cropper.js" language="javascript"></script>
+ <link rel="stylesheet" href="library/cropper/cropper.css" type="text/css" />
diff --git a/view/tpl/smarty3/delegate.tpl b/view/tpl/smarty3/delegate.tpl
new file mode 100644
index 000000000..cbaa8da86
--- /dev/null
+++ b/view/tpl/smarty3/delegate.tpl
@@ -0,0 +1,57 @@
+<h3>{{$header}}</h3>
+
+<div id="delegate-desc" class="delegate-desc">{{$desc}}</div>
+
+{{if $managers}}
+<h3>{{$head_managers}}</h3>
+
+{{foreach $managers as $x}}
+
+<div class="contact-block-div">
+<a class="contact-block-link" href="#" >
+<img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" />
+</a>
+</div>
+
+{{/foreach}}
+<div class="clear"></div>
+<hr />
+{{/if}}
+
+
+<h3>{{$head_delegates}}</h3>
+
+{{if $delegates}}
+{{foreach $delegates as $x}}
+
+<div class="contact-block-div">
+<a class="contact-block-link" href="{{$base}}/delegate/remove/{{$x.uid}}" >
+<img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" />
+</a>
+</div>
+
+{{/foreach}}
+<div class="clear"></div>
+{{else}}
+{{$none}}
+{{/if}}
+<hr />
+
+
+<h3>{{$head_potentials}}</h3>
+{{if $potentials}}
+{{foreach $potentials as $x}}
+
+<div class="contact-block-div">
+<a class="contact-block-link" href="{{$base}}/delegate/add/{{$x.uid}}" >
+<img class="contact-block-img" src="{{$base}}/photo/thumb/{{$x.uid}}" title="{{$x.username}} ({{$x.nickname}})" />
+</a>
+</div>
+
+{{/foreach}}
+<div class="clear"></div>
+{{else}}
+{{$none}}
+{{/if}}
+<hr />
+
diff --git a/view/tpl/smarty3/dfrn_req_confirm.tpl b/view/tpl/smarty3/dfrn_req_confirm.tpl
new file mode 100644
index 000000000..655af22d4
--- /dev/null
+++ b/view/tpl/smarty3/dfrn_req_confirm.tpl
@@ -0,0 +1,21 @@
+
+<p id="dfrn-request-homecoming" >
+{{$welcome}}
+<br />
+{{$please}}
+
+</p>
+<form id="dfrn-request-homecoming-form" action="dfrn_request/{{$nickname}}" method="post">
+<input type="hidden" name="dfrn_url" value="{{$dfrn_url}}" />
+<input type="hidden" name="confirm_key" value="{{$confirm_key}}" />
+<input type="hidden" name="localconfirm" value="1" />
+{{$aes_allow}}
+
+<label id="dfrn-request-homecoming-hide-label" for="dfrn-request-homecoming-hide">{{$hidethem}}</label>
+<input type="checkbox" name="hidden-contact" value="1" {{if $hidechecked}}checked="checked" {{/if}} />
+
+
+<div id="dfrn-request-homecoming-submit-wrapper" >
+<input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="{{$submit}}" />
+</div>
+</form> \ No newline at end of file
diff --git a/view/tpl/smarty3/dfrn_request.tpl b/view/tpl/smarty3/dfrn_request.tpl
new file mode 100644
index 000000000..ce7b3eb55
--- /dev/null
+++ b/view/tpl/smarty3/dfrn_request.tpl
@@ -0,0 +1,59 @@
+
+<h1>{{$header}}</h1>
+
+<p id="dfrn-request-intro">
+{{$page_desc}}<br />
+{{$invite_desc}}
+</p>
+<p>
+{{$desc}}
+</p>
+
+<form action="dfrn_request/{{$nickname}}" method="post" />
+
+<div id="dfrn-request-url-wrapper" >
+ <label id="dfrn-url-label" for="dfrn-url" >{{$your_address}}</label>
+ <input type="text" name="dfrn_url" id="dfrn-url" size="32" value="{{$myaddr}}" />
+ <div id="dfrn-request-url-end"></div>
+</div>
+
+<p id="dfrn-request-options">
+{{$pls_answer}}
+</p>
+
+<div id="dfrn-request-info-wrapper" >
+
+
+<p id="doiknowyou">
+{{$does_know}}
+</p>
+
+ <div id="dfrn-request-know-yes-wrapper">
+ <label id="dfrn-request-knowyou-yes-label" for="dfrn-request-knowyouyes">{{$yes}}</label>
+ <input type="radio" name="knowyou" id="knowyouyes" value="1" />
+
+ <div id="dfrn-request-knowyou-break" ></div>
+ </div>
+ <div id="dfrn-request-know-no-wrapper">
+ <label id="dfrn-request-knowyou-no-label" for="dfrn-request-knowyouno">{{$no}}</label>
+ <input type="radio" name="knowyou" id="knowyouno" value="0" checked="checked" />
+
+ <div id="dfrn-request-knowyou-end"></div>
+ </div>
+
+
+<p id="dfrn-request-message-desc">
+{{$add_note}}
+</p>
+ <div id="dfrn-request-message-wrapper">
+ <textarea name="dfrn-request-message" rows="4" cols="64" ></textarea>
+ </div>
+
+
+</div>
+
+ <div id="dfrn-request-submit-wrapper">
+ <input type="submit" name="submit" id="dfrn-request-submit-button" value="{{$submit}}" />
+ <input type="submit" name="cancel" id="dfrn-request-cancel-button" value="{{$cancel}}" />
+ </div>
+</form>
diff --git a/view/tpl/smarty3/diasp_dec_hdr.tpl b/view/tpl/smarty3/diasp_dec_hdr.tpl
new file mode 100644
index 000000000..636ff7bd0
--- /dev/null
+++ b/view/tpl/smarty3/diasp_dec_hdr.tpl
@@ -0,0 +1,8 @@
+<decrypted_hdeader>
+ <iv>{{$inner_iv}}</iv>
+ <aes_key>{{$inner_key}}</aes_key>
+ <author>
+ <name>{{$author_name}}</name>
+ <uri>{{$author_uri}}</uri>
+ </author>
+</decrypted_header>
diff --git a/view/tpl/smarty3/diaspora_comment.tpl b/view/tpl/smarty3/diaspora_comment.tpl
new file mode 100644
index 000000000..27ec3dffc
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_comment.tpl
@@ -0,0 +1,11 @@
+<XML>
+ <post>
+ <comment>
+ <guid>{{$guid}}</guid>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <author_signature>{{$authorsig}}</author_signature>
+ <text>{{$body}}</text>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </comment>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_comment_relay.tpl b/view/tpl/smarty3/diaspora_comment_relay.tpl
new file mode 100644
index 000000000..37a9e88b3
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_comment_relay.tpl
@@ -0,0 +1,12 @@
+<XML>
+ <post>
+ <comment>
+ <guid>{{$guid}}</guid>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <author_signature>{{$authorsig}}</author_signature>
+ <text>{{$body}}</text>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </comment>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_conversation.tpl b/view/tpl/smarty3/diaspora_conversation.tpl
new file mode 100644
index 000000000..dc4482e4b
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_conversation.tpl
@@ -0,0 +1,29 @@
+<XML>
+ <post>
+ <conversation>
+ <guid>{{$conv.guid}}</guid>
+ <subject>{{$conv.subject}}</subject>
+ <created_at>{{$conv.created_at}}</created_at>
+
+ {{foreach $conv.messages as $msg}}
+
+ <message>
+ <guid>{{$msg.guid}}</guid>
+ <parent_guid>{{$msg.parent_guid}}</parent_guid>
+ {{if $msg.parent_author_signature}}
+ <parent_author_signature>{{$msg.parent_author_signature}}</parent_author_signature>
+ {{/if}}
+ <author_signature>{{$msg.author_signature}}</author_signature>
+ <text>{{$msg.text}}</text>
+ <created_at>{{$msg.created_at}}</created_at>
+ <diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
+ <conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
+ </message>
+
+ {{/foreach}}
+
+ <diaspora_handle>{{$conv.diaspora_handle}}</diaspora_handle>
+ <participant_handles>{{$conv.participant_handles}}</participant_handles>
+ </conversation>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_like.tpl b/view/tpl/smarty3/diaspora_like.tpl
new file mode 100644
index 000000000..b03aef37a
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_like.tpl
@@ -0,0 +1,12 @@
+<XML>
+ <post>
+ <like>
+ <target_type>{{$target_type}}</target_type>
+ <guid>{{$guid}}</guid>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <author_signature>{{$authorsig}}</author_signature>
+ <positive>{{$positive}}</positive>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </like>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_like_relay.tpl b/view/tpl/smarty3/diaspora_like_relay.tpl
new file mode 100644
index 000000000..30df4cac6
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_like_relay.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <like>
+ <guid>{{$guid}}</guid>
+ <target_type>{{$target_type}}</target_type>
+ <parent_guid>{{$parent_guid}}</parent_guid>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <author_signature>{{$authorsig}}</author_signature>
+ <positive>{{$positive}}</positive>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </like>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_message.tpl b/view/tpl/smarty3/diaspora_message.tpl
new file mode 100644
index 000000000..3413d79b0
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_message.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <message>
+ <guid>{{$msg.guid}}</guid>
+ <parent_guid>{{$msg.parent_guid}}</parent_guid>
+ <author_signature>{{$msg.author_signature}}</author_signature>
+ <text>{{$msg.text}}</text>
+ <created_at>{{$msg.created_at}}</created_at>
+ <diaspora_handle>{{$msg.diaspora_handle}}</diaspora_handle>
+ <conversation_guid>{{$msg.conversation_guid}}</conversation_guid>
+ </message>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_photo.tpl b/view/tpl/smarty3/diaspora_photo.tpl
new file mode 100644
index 000000000..cd7ef5802
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_photo.tpl
@@ -0,0 +1,13 @@
+<XML>
+ <post>
+ <photo>
+ <remote_photo_path>{{$path}}</remote_photo_path>
+ <remote_photo_name>{{$filename}}</remote_photo_name>
+ <status_message_guid>{{$msg_guid}}</status_message_guid>
+ <guid>{{$guid}}</guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <public>{{$public}}</public>
+ <created_at>{{$created_at}}</created_at>
+ </photo>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_post.tpl b/view/tpl/smarty3/diaspora_post.tpl
new file mode 100644
index 000000000..abbcc4c61
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_post.tpl
@@ -0,0 +1,11 @@
+<XML>
+ <post>
+ <status_message>
+ <raw_message>{{$body}}</raw_message>
+ <guid>{{$guid}}</guid>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <public>{{$public}}</public>
+ <created_at>{{$created}}</created_at>
+ </status_message>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_profile.tpl b/view/tpl/smarty3/diaspora_profile.tpl
new file mode 100644
index 000000000..04f2e2948
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_profile.tpl
@@ -0,0 +1,16 @@
+<XML>
+ <post><profile>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ <first_name>{{$first}}</first_name>
+ <last_name>{{$last}}</last_name>
+ <image_url>{{$large}}</image_url>
+ <image_url_small>{{$small}}</image_url_small>
+ <image_url_medium>{{$medium}}</image_url_medium>
+ <birthday>{{$dob}}</birthday>
+ <gender>{{$gender}}</gender>
+ <bio>{{$about}}</bio>
+ <location>{{$location}}</location>
+ <searchable>{{$searchable}}</searchable>
+ <tag_string>{{$tags}}</tag_string>
+</profile></post>
+ </XML>
diff --git a/view/tpl/smarty3/diaspora_relay_retraction.tpl b/view/tpl/smarty3/diaspora_relay_retraction.tpl
new file mode 100644
index 000000000..5e7aed41f
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_relay_retraction.tpl
@@ -0,0 +1,10 @@
+<XML>
+ <post>
+ <relayable_retraction>
+ <target_type>{{$type}}</target_type>
+ <target_guid>{{$guid}}</target_guid>
+ <target_author_signature>{{$signature}}</target_author_signature>
+ <sender_handle>{{$handle}}</sender_handle>
+ </relayable_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_relayable_retraction.tpl b/view/tpl/smarty3/diaspora_relayable_retraction.tpl
new file mode 100644
index 000000000..927e394f3
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_relayable_retraction.tpl
@@ -0,0 +1,11 @@
+<XML>
+ <post>
+ <relayable_retraction>
+ <target_type>{{$target_type}}</target_type>
+ <target_guid>{{$guid}}</target_guid>
+ <parent_author_signature>{{$parentsig}}</parent_author_signature>
+ <target_author_signature>{{$authorsig}}</target_author_signature>
+ <sender_handle>{{$handle}}</sender_handle>
+ </relayable_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_retract.tpl b/view/tpl/smarty3/diaspora_retract.tpl
new file mode 100644
index 000000000..26e2cb94e
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_retract.tpl
@@ -0,0 +1,9 @@
+<XML>
+ <post>
+ <retraction>
+ <post_guid>{{$guid}}</post_guid>
+ <type>{{$type}}</type>
+ <diaspora_handle>{{$handle}}</diaspora_handle>
+ </retraction>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_share.tpl b/view/tpl/smarty3/diaspora_share.tpl
new file mode 100644
index 000000000..59eb06124
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_share.tpl
@@ -0,0 +1,8 @@
+<XML>
+ <post>
+ <request>
+ <sender_handle>{{$sender}}</sender_handle>
+ <recipient_handle>{{$recipient}}</recipient_handle>
+ </request>
+ </post>
+</XML> \ No newline at end of file
diff --git a/view/tpl/smarty3/diaspora_signed_retract.tpl b/view/tpl/smarty3/diaspora_signed_retract.tpl
new file mode 100644
index 000000000..f0f346da8
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_signed_retract.tpl
@@ -0,0 +1,10 @@
+<XML>
+ <post>
+ <signed_retraction>
+ <target_guid>{{$guid}}</target_guid>
+ <target_type>{{$type}}</target_type>
+ <sender_handle>{{$handle}}</sender_handle>
+ <target_author_signature>{{$signature}}</target_author_signature>
+ </signed_retraction>
+ </post>
+</XML>
diff --git a/view/tpl/smarty3/diaspora_vcard.tpl b/view/tpl/smarty3/diaspora_vcard.tpl
new file mode 100644
index 000000000..0ab6879f9
--- /dev/null
+++ b/view/tpl/smarty3/diaspora_vcard.tpl
@@ -0,0 +1,57 @@
+<div style="display:none;">
+ <dl class='channel_nickname'>
+ <dt>Nickname</dt>
+ <dd>
+ <a class="nickname url uid" href="{{$diaspora.podloc}}/" rel="me">{{$diaspora.nickname}}</a>
+ </dd>
+ </dl>
+ <dl class='channel_fn'>
+ <dt>Full name</dt>
+ <dd>
+ <span class='fn'>{{$diaspora.fullname}}</span>
+ </dd>
+ </dl>
+
+ <dl class='channel_given_name'>
+ <dt>First name</dt>
+ <dd>
+ <span class='given_name'>{{$diaspora.firstname}}</span>
+ </dd>
+ </dl>
+ <dl class='channel_family_name'>
+ <dt>Family name</dt>
+ <dd>
+ <span class='family_name'>{{$diaspora.lastname}}</span>
+ </dd>
+ </dl>
+ <dl class="channel_url">
+ <dt>URL</dt>
+ <dd>
+ <a class="url" href="{{$diaspora.podloc}}/" id="pod_location" rel="me">{{$diaspora.podloc}}/</a>
+ </dd>
+ </dl>
+ <dl class="channel_photo">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="300" width="300" src="{{$diaspora.photo300}}">
+ </dd>
+ </dl>
+ <dl class="channel_photo_medium">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="100" width="100" src="{{$diaspora.photo100}}">
+ </dd>
+ </dl>
+ <dl class="channel_photo_small">
+ <dt>Photo</dt>
+ <dd>
+ <img class="photo avatar" height="50" width="50" src="{{$diaspora.photo50}}">
+ </dd>
+ </dl>
+ <dl class="channel_searchable">
+ <dt>Searchable</dt>
+ <dd>
+ <span class="searchable">{{$diaspora.searchable}}</span>
+ </dd>
+ </dl>
+</div>
diff --git a/view/tpl/smarty3/directory_header.tpl b/view/tpl/smarty3/directory_header.tpl
new file mode 100644
index 000000000..c2ca64682
--- /dev/null
+++ b/view/tpl/smarty3/directory_header.tpl
@@ -0,0 +1,16 @@
+<h1>{{$sitedir}}</h1>
+
+{{$globaldir}}
+{{$admin}}
+
+{{$finding}}
+
+<div id="directory-search-wrapper">
+<form id="directory-search-form" action="directory" method="get" >
+<span class="dirsearch-desc">{{$desc}}</span>
+<input type="text" name="search" id="directory-search" class="search-input" onfocus="this.select();" value="{{$search}}" />
+<input type="submit" name="submit" id="directory-search-submit" value="{{$submit}}" class="button" />
+</form>
+</div>
+<div id="directory-search-end"></div>
+
diff --git a/view/tpl/smarty3/directory_item.tpl b/view/tpl/smarty3/directory_item.tpl
new file mode 100644
index 000000000..f4bd66d77
--- /dev/null
+++ b/view/tpl/smarty3/directory_item.tpl
@@ -0,0 +1,11 @@
+
+<div class="directory-item lframe" id="directory-item-{{$id}}" >
+ <div class="contact-photo-wrapper" id="directory-photo-wrapper-{{$id}}" >
+ <div class="contact-photo" id="directory-photo-{{$id}}" >
+ <a href="{{$profile_link}}" class="directory-profile-link" id="directory-profile-link-{{$id}}" ><img class="directory-photo-img" src="{{$photo}}" alt="{{$alt_text}}" title="{{$alt_text}}" /></a>
+ </div>
+ </div>
+
+ <div class="contact-name" id="directory-name-{{$id}}">{{$name}}</div>
+ <div class="contact-details">{{$details}}</div>
+</div>
diff --git a/view/tpl/smarty3/display-head.tpl b/view/tpl/smarty3/display-head.tpl
new file mode 100644
index 000000000..3d4e7e96a
--- /dev/null
+++ b/view/tpl/smarty3/display-head.tpl
@@ -0,0 +1,8 @@
+<script>
+$(document).ready(function() {
+ $(".comment-edit-wrapper textarea").contact_autocomplete(baseurl+"/acl");
+ // make auto-complete work in more places
+ $(".wall-item-comment-wrapper textarea").contact_autocomplete(baseurl+"/acl");
+});
+</script>
+
diff --git a/view/tpl/smarty3/email_notify_html.tpl b/view/tpl/smarty3/email_notify_html.tpl
new file mode 100644
index 000000000..38c933aac
--- /dev/null
+++ b/view/tpl/smarty3/email_notify_html.tpl
@@ -0,0 +1,27 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional //EN">
+<html>
+<head>
+ <title>{{$banner}}</title>
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+<table style="border:1px solid #ccc">
+ <tbody>
+ <tr><td colspan="2" style="background:#084769; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px; float:left;" src='{{$siteurl}}/images/friendica-32.png'><div style="padding:7px; margin-left: 5px; float:left; font-size:18px;letter-spacing:1px;">{{$product}}</div><div style="clear: both;"></div></td></tr>
+
+
+ <tr><td style="padding-top:22px;" colspan="2">{{$preamble}}</td></tr>
+
+
+ <tr><td style="padding-left:22px;padding-top:22px;width:60px;" valign="top" rowspan=3><a href="{{$source_link}}"><img style="border:0px;width:48px;height:48px;" src="{{$source_photo}}"></a></td>
+ <td style="padding-top:22px;"><a href="{{$source_link}}">{{$source_name}}</a></td></tr>
+ <tr><td style="font-weight:bold;padding-bottom:5px;">{{$title}}</td></tr>
+ <tr><td style="padding-right:22px;">{{$htmlversion}}</td></tr>
+ <tr><td style="padding-top:11px;" colspan="2">{{$hsitelink}}</td></tr>
+ <tr><td style="padding-bottom:11px;" colspan="2">{{$hitemlink}}</td></tr>
+ <tr><td></td><td>{{$thanks}}</td></tr>
+ <tr><td></td><td>{{$site_admin}}</td></tr>
+ </tbody>
+</table>
+</body>
+</html>
diff --git a/view/tpl/smarty3/email_notify_text.tpl b/view/tpl/smarty3/email_notify_text.tpl
new file mode 100644
index 000000000..3de006095
--- /dev/null
+++ b/view/tpl/smarty3/email_notify_text.tpl
@@ -0,0 +1,13 @@
+
+{{$preamble}}
+
+{{$title}}
+
+{{$textversion}}
+
+{{$tsitelink}}
+{{$titemlink}}
+
+{{$thanks}}
+{{$site_admin}}
+
diff --git a/view/tpl/smarty3/event.tpl b/view/tpl/smarty3/event.tpl
new file mode 100644
index 000000000..7ce2572a4
--- /dev/null
+++ b/view/tpl/smarty3/event.tpl
@@ -0,0 +1,10 @@
+{{foreach $events as $event}}
+ <div class="event">
+
+ {{if $event.item.author-name}}<a href="{{$event.item.author-link}}" ><img src="{{$event.item.author-avatar}}" height="32" width="32" />{{$event.item.author-name}}</a>{{/if}}
+ {{$event.html}}
+ {{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" class="plink-event-link icon s22 remote-link"></a>{{/if}}
+ {{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}}
+ </div>
+ <div class="clear"></div>
+{{/foreach}}
diff --git a/view/tpl/smarty3/event_form.tpl b/view/tpl/smarty3/event_form.tpl
new file mode 100644
index 000000000..0091b59aa
--- /dev/null
+++ b/view/tpl/smarty3/event_form.tpl
@@ -0,0 +1,49 @@
+<h3>{{$title}}</h3>
+
+<p>
+{{$desc}}
+</p>
+
+<form action="{{$post}}" method="post" >
+
+<input type="hidden" name="event_id" value="{{$eid}}" />
+<input type="hidden" name="cid" value="{{$cid}}" />
+<input type="hidden" name="uri" value="{{$uri}}" />
+
+<div id="event-start-text">{{$s_text}}</div>
+{{$s_dsel}} {{$s_tsel}}
+
+<div id="event-finish-text">{{$f_text}}</div>
+{{$f_dsel}} {{$f_tsel}}
+
+<div id="event-datetime-break"></div>
+
+<input type="checkbox" name="nofinish" value="1" id="event-nofinish-checkbox" {{$n_checked}} /> <div id="event-nofinish-text">{{$n_text}}</div>
+
+<div id="event-nofinish-break"></div>
+
+<input type="checkbox" name="adjust" value="1" id="event-adjust-checkbox" {{$a_checked}} /> <div id="event-adjust-text">{{$a_text}}</div>
+
+<div id="event-adjust-break"></div>
+
+<div id="event-summary-text">{{$t_text}}</div>
+<input type="text" id="event-summary" name="summary" value="{{$t_orig}}" />
+
+
+<div id="event-desc-text">{{$d_text}}</div>
+<textarea id="event-desc-textarea" name="desc">{{$d_orig}}</textarea>
+
+
+<div id="event-location-text">{{$l_text}}</div>
+<textarea id="event-location-textarea" name="location">{{$l_orig}}</textarea>
+
+<input type="checkbox" name="share" value="1" id="event-share-checkbox" {{$sh_checked}} /> <div id="event-share-text">{{$sh_text}}</div>
+<div id="event-share-break"></div>
+
+{{$acl}}
+
+<div class="clear"></div>
+<input id="event-submit" type="submit" name="submit" value="{{$submit}}" />
+</form>
+
+
diff --git a/view/tpl/smarty3/event_head.tpl b/view/tpl/smarty3/event_head.tpl
new file mode 100644
index 000000000..2e2992e07
--- /dev/null
+++ b/view/tpl/smarty3/event_head.tpl
@@ -0,0 +1,139 @@
+<link rel='stylesheet' type='text/css' href='{{$baseurl}}/library/fullcalendar/fullcalendar.css' />
+<script language="javascript" type="text/javascript"
+ src="{{$baseurl}}/library/fullcalendar/fullcalendar.min.js"></script>
+
+<script>
+ function showEvent(eventid) {
+ $.get(
+ '{{$baseurl}}/events/?id='+eventid,
+ function(data){
+ $.fancybox(data);
+ }
+ );
+ }
+
+ $(document).ready(function() {
+ $('#events-calendar').fullCalendar({
+ events: '{{$baseurl}}/events/json/',
+ header: {
+ left: 'prev,next today',
+ center: 'title',
+ right: 'month,agendaWeek,agendaDay'
+ },
+ timeFormat: 'H(:mm)',
+ eventClick: function(calEvent, jsEvent, view) {
+ showEvent(calEvent.id);
+ },
+
+ eventRender: function(event, element, view) {
+ //console.log(view.name);
+ if (event.item['author-name']==null) return;
+ switch(view.name){
+ case "month":
+ element.find(".fc-event-title").html(
+ "<img src='{0}' style='height:10px;width:10px'>{1} : {2}".format(
+ event.item['author-avatar'],
+ event.item['author-name'],
+ event.title
+ ));
+ break;
+ case "agendaWeek":
+ element.find(".fc-event-title").html(
+ "<img src='{0}' style='height:12px; width:12px'>{1}<p>{2}</p><p>{3}</p>".format(
+ event.item['author-avatar'],
+ event.item['author-name'],
+ event.item.desc,
+ event.item.location
+ ));
+ break;
+ case "agendaDay":
+ element.find(".fc-event-title").html(
+ "<img src='{0}' style='height:24px;width:24px'>{1}<p>{2}</p><p>{3}</p>".format(
+ event.item['author-avatar'],
+ event.item['author-name'],
+ event.item.desc,
+ event.item.location
+ ));
+ break;
+ }
+ }
+
+ })
+
+ // center on date
+ var args=location.href.replace(baseurl,"").split("/");
+ if (args.length>=4) {
+ $("#events-calendar").fullCalendar('gotoDate',args[2] , args[3]-1);
+ }
+
+ // show event popup
+ var hash = location.hash.split("-")
+ if (hash.length==2 && hash[0]=="#link") showEvent(hash[1]);
+
+ });
+</script>
+
+
+<script language="javascript" type="text/javascript"
+ src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+<script language="javascript" type="text/javascript">
+
+
+ tinyMCE.init({
+ theme : "advanced",
+ mode : "textareas",
+ plugins : "bbcode,paste",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ content_css: "{{$baseurl}}/view/custom_tinymce.css",
+ theme_advanced_path : false,
+ setup : function(ed) {
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ });
+ }
+
+ });
+
+
+ $(document).ready(function() {
+
+ $('#event-share-checkbox').change(function() {
+
+ if ($('#event-share-checkbox').is(':checked')) {
+ $('#acl-wrapper').show();
+ }
+ else {
+ $('#acl-wrapper').hide();
+ }
+ }).trigger('change');
+
+
+ $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
+ var selstr;
+ $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
+ selstr = $(this).text();
+ $('#jot-public').hide();
+ });
+ if(selstr == null) {
+ $('#jot-public').show();
+ }
+
+ }).trigger('change');
+
+ });
+
+</script>
+
diff --git a/view/tpl/smarty3/events-js.tpl b/view/tpl/smarty3/events-js.tpl
new file mode 100644
index 000000000..c87d20529
--- /dev/null
+++ b/view/tpl/smarty3/events-js.tpl
@@ -0,0 +1,6 @@
+{{$tabs}}
+<h2>{{$title}}</h2>
+
+<div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div>
+
+<div id="events-calendar"></div>
diff --git a/view/tpl/smarty3/events.tpl b/view/tpl/smarty3/events.tpl
new file mode 100644
index 000000000..48bd82d96
--- /dev/null
+++ b/view/tpl/smarty3/events.tpl
@@ -0,0 +1,24 @@
+{{$tabs}}
+<h2>{{$title}}</h2>
+
+<div id="new-event-link"><a href="{{$new_event.0}}" >{{$new_event.1}}</a></div>
+
+<div id="event-calendar-wrapper">
+ <a href="{{$previus.0}}" class="prevcal {{$previus.2}}"><div id="event-calendar-prev" class="icon s22 prev" title="{{$previus.1}}"></div></a>
+ {{$calendar}}
+ <a href="{{$next.0}}" class="nextcal {{$next.2}}"><div id="event-calendar-prev" class="icon s22 next" title="{{$next.1}}"></div></a>
+</div>
+<div class="event-calendar-end"></div>
+
+
+{{foreach $events as $event}}
+ <div class="event">
+ {{if $event.is_first}}<hr /><a name="link-{{$event.j}}" ><div class="event-list-date">{{$event.d}}</div></a>{{/if}}
+ {{if $event.item.author-name}}<a href="{{$event.item.author-link}}" ><img src="{{$event.item.author-avatar}}" height="32" width="32" />{{$event.item.author-name}}</a>{{/if}}
+ {{$event.html}}
+ {{if $event.item.plink}}<a href="{{$event.plink.0}}" title="{{$event.plink.1}}" class="plink-event-link icon s22 remote-link"></a>{{/if}}
+ {{if $event.edit}}<a href="{{$event.edit.0}}" title="{{$event.edit.1}}" class="edit-event-link icon s22 pencil"></a>{{/if}}
+ </div>
+ <div class="clear"></div>
+
+{{/foreach}}
diff --git a/view/tpl/smarty3/events_reminder.tpl b/view/tpl/smarty3/events_reminder.tpl
new file mode 100644
index 000000000..fd6a1a5c7
--- /dev/null
+++ b/view/tpl/smarty3/events_reminder.tpl
@@ -0,0 +1,10 @@
+{{if $count}}
+<div id="event-notice" class="birthday-notice fakelink {{$classtoday}}" onclick="openClose('event-wrapper');">{{$event_reminders}} ({{$count}})</div>
+<div id="event-wrapper" style="display: none;" ><div id="event-title">{{$event_title}}</div>
+<div id="event-title-end"></div>
+{{foreach $events as $event}}
+<div class="event-list" id="event-{{$event.id}}"></a> <a href="events/{{$event.link}}">{{$event.title}}</a> {{$event.date}} </div>
+{{/foreach}}
+</div>
+{{/if}}
+
diff --git a/view/tpl/smarty3/failed_updates.tpl b/view/tpl/smarty3/failed_updates.tpl
new file mode 100644
index 000000000..68c0bcdf2
--- /dev/null
+++ b/view/tpl/smarty3/failed_updates.tpl
@@ -0,0 +1,17 @@
+<h2>{{$banner}}</h2>
+
+<div id="failed_updates_desc">{{$desc}}</div>
+
+{{if $failed}}
+{{foreach $failed as $f}}
+
+<h4>{{$f}}</h4>
+<ul>
+<li><a href="{{$base}}/admin/dbsync/mark/{{$f}}">{{$mark}}</a></li>
+<li><a href="{{$base}}/admin/dbsync/{{$f}}">{{$apply}}</a></li>
+</ul>
+
+<hr />
+{{/foreach}}
+{{/if}}
+
diff --git a/view/tpl/smarty3/fake_feed.tpl b/view/tpl/smarty3/fake_feed.tpl
new file mode 100644
index 000000000..c37071cf4
--- /dev/null
+++ b/view/tpl/smarty3/fake_feed.tpl
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<feed xmlns="http://www.w3.org/2005/Atom" >
+
+ <id>fake feed</id>
+ <title>fake title</title>
+
+ <updated>1970-01-01T00:00:00Z</updated>
+
+ <author>
+ <name>Fake Name</name>
+ <uri>http://example.com</uri>
+ </author>
+
diff --git a/view/tpl/smarty3/field.tpl b/view/tpl/smarty3/field.tpl
new file mode 100644
index 000000000..b7111ce5c
--- /dev/null
+++ b/view/tpl/smarty3/field.tpl
@@ -0,0 +1,4 @@
+
+ {{if $field.0==select}}
+ {{include file="field_select.tpl"}}
+ {{/if}}
diff --git a/view/tpl/smarty3/field_acheckbox.tpl b/view/tpl/smarty3/field_acheckbox.tpl
new file mode 100644
index 000000000..818c59721
--- /dev/null
+++ b/view/tpl/smarty3/field_acheckbox.tpl
@@ -0,0 +1,7 @@
+
+ <div class='field acheckbox'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <input type="checkbox" class="abook-edit-them" name='{{$field.0}}' id='id_{{$field.0}}' value="1" disabled="disabled" {{if $field.2}}checked="checked"{{/if}} />
+ <input type="checkbox" class="abook-edit-me" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.4}}" {{if $field.3}}checked="checked"{{/if}} {{if $field.5}} disabled="disabled" {{/if}}/>
+ <span class='field_abook_help'>{{$field.6}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_checkbox.tpl b/view/tpl/smarty3/field_checkbox.tpl
new file mode 100644
index 000000000..ab9c0478e
--- /dev/null
+++ b/view/tpl/smarty3/field_checkbox.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field checkbox'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="1" {{if $field.2}}checked="checked"{{/if}}>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_combobox.tpl b/view/tpl/smarty3/field_combobox.tpl
new file mode 100644
index 000000000..3d69e2d27
--- /dev/null
+++ b/view/tpl/smarty3/field_combobox.tpl
@@ -0,0 +1,18 @@
+
+ <div class='field combobox'>
+ <label for='id_{{$field.0}}' id='id_{{$field.0}}_label'>{{$field.1}}</label>
+ {{* html5 don't work on Chrome, Safari and IE9
+ <input id="id_{{$field.0}}" type="text" list="data_{{$field.0}}" >
+ <datalist id="data_{{$field.0}}" >
+ {{foreach $field.4 as $opt=>$val}}<option value="{{$val}}">{{/foreach}}
+ </datalist> *}}
+
+ <input id="id_{{$field.0}}" type="text" value="{{$field.2}}">
+ <select id="select_{{$field.0}}" onChange="$('#id_{{$field.0}}').val($(this).val())">
+ <option value="">{{$field.5}}</option>
+ {{foreach $field.4 as $opt=>$val}}<option value="{{$val}}">{{$val}}</option>{{/foreach}}
+ </select>
+
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
+
diff --git a/view/tpl/smarty3/field_custom.tpl b/view/tpl/smarty3/field_custom.tpl
new file mode 100644
index 000000000..e1bf318da
--- /dev/null
+++ b/view/tpl/smarty3/field_custom.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field custom'>
+ <label for='{{$field.0}}'>{{$field.1}}</label>
+ {{$field.2}}
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_input.tpl b/view/tpl/smarty3/field_input.tpl
new file mode 100644
index 000000000..2c5b2b238
--- /dev/null
+++ b/view/tpl/smarty3/field_input.tpl
@@ -0,0 +1,7 @@
+
+ <div class='field input'>
+ <label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
+ <input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
+ <span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
+ <div id='end_{{$field.0}}' class='field_end'></div>
+ </div>
diff --git a/view/tpl/smarty3/field_intcheckbox.tpl b/view/tpl/smarty3/field_intcheckbox.tpl
new file mode 100644
index 000000000..a6ef7cc8f
--- /dev/null
+++ b/view/tpl/smarty3/field_intcheckbox.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field checkbox'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <input type="checkbox" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.3}}" {{if $field.2}}checked="true"{{/if}}>
+ <span class='field_help'>{{$field.4}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_openid.tpl b/view/tpl/smarty3/field_openid.tpl
new file mode 100644
index 000000000..53dbfdde0
--- /dev/null
+++ b/view/tpl/smarty3/field_openid.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field input openid'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_password.tpl b/view/tpl/smarty3/field_password.tpl
new file mode 100644
index 000000000..e840a312d
--- /dev/null
+++ b/view/tpl/smarty3/field_password.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field password'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <input type='password' name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_radio.tpl b/view/tpl/smarty3/field_radio.tpl
new file mode 100644
index 000000000..cff8881f5
--- /dev/null
+++ b/view/tpl/smarty3/field_radio.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field radio'>
+ <label for='id_{{$field.0}}_{{$field.2}}'>{{$field.1}}</label>
+ <input type="radio" name='{{$field.0}}' id='id_{{$field.0}}_{{$field.2}}' value="{{$field.2}}" {{if $field.4}}checked="true"{{/if}}>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_richtext.tpl b/view/tpl/smarty3/field_richtext.tpl
new file mode 100644
index 000000000..641493989
--- /dev/null
+++ b/view/tpl/smarty3/field_richtext.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field richtext'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <textarea name='{{$field.0}}' id='id_{{$field.0}}' class="fieldRichtext">{{$field.2}}</textarea>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_select.tpl b/view/tpl/smarty3/field_select.tpl
new file mode 100644
index 000000000..18192e1d8
--- /dev/null
+++ b/view/tpl/smarty3/field_select.tpl
@@ -0,0 +1,8 @@
+
+ <div class='field select'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <select name='{{$field.0}}' id='id_{{$field.0}}'>
+ {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+ </select>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_select_raw.tpl b/view/tpl/smarty3/field_select_raw.tpl
new file mode 100644
index 000000000..4e495dcf8
--- /dev/null
+++ b/view/tpl/smarty3/field_select_raw.tpl
@@ -0,0 +1,8 @@
+
+ <div class='field select'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <select name='{{$field.0}}' id='id_{{$field.0}}'>
+ {{$field.4}}
+ </select>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_textarea.tpl b/view/tpl/smarty3/field_textarea.tpl
new file mode 100644
index 000000000..8c311563f
--- /dev/null
+++ b/view/tpl/smarty3/field_textarea.tpl
@@ -0,0 +1,6 @@
+
+ <div class='field textarea'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <textarea name='{{$field.0}}' id='id_{{$field.0}}'>{{$field.2}}</textarea>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/field_themeselect.tpl b/view/tpl/smarty3/field_themeselect.tpl
new file mode 100644
index 000000000..c02eee328
--- /dev/null
+++ b/view/tpl/smarty3/field_themeselect.tpl
@@ -0,0 +1,9 @@
+ <script>$(function(){ previewTheme($("#id_{{$field.0}}")[0]); });</script>
+ <div class='field select'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <select name='{{$field.0}}' id='id_{{$field.0}}' {{if $field.5=='preview'}}onchange="previewTheme(this);"{{/if}} >
+ {{foreach $field.4 as $opt=>$val}}<option value="{{$opt}}" {{if $opt==$field.2}}selected="selected"{{/if}}>{{$val}}</option>{{/foreach}}
+ </select>
+ <span class='field_help'>{{$field.3}}</span>
+ <div id="theme-preview"></div>
+ </div>
diff --git a/view/tpl/smarty3/field_yesno.tpl b/view/tpl/smarty3/field_yesno.tpl
new file mode 100644
index 000000000..e36e775c7
--- /dev/null
+++ b/view/tpl/smarty3/field_yesno.tpl
@@ -0,0 +1,13 @@
+ <div class='field yesno'>
+ <label for='id_{{$field.0}}'>{{$field.1}}</label>
+ <div class='onoff' id="id_{{$field.0}}_onoff">
+ <input type="hidden" name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
+ <a href="#" class='off'>
+ {{if $field.4}}{{$field.4.0}}{{else}}OFF{{/if}}
+ </a>
+ <a href="#" class='on'>
+ {{if $field.4}}{{$field.4.1}}{{else}}ON{{/if}}
+ </a>
+ </div>
+ <span class='field_help'>{{$field.3}}</span>
+ </div>
diff --git a/view/tpl/smarty3/fileas_widget.tpl b/view/tpl/smarty3/fileas_widget.tpl
new file mode 100644
index 000000000..70d68c56e
--- /dev/null
+++ b/view/tpl/smarty3/fileas_widget.tpl
@@ -0,0 +1,12 @@
+<div id="fileas-sidebar" class="widget">
+ <h3>{{$title}}</h3>
+ <div id="nets-desc">{{$desc}}</div>
+
+ <ul class="fileas-ul">
+ <li class="tool"><a href="{{$base}}" class="fileas-link fileas-all{{if $sel_all}} fileas-selected{{/if}}">{{$all}}</a></li>
+ {{foreach $terms as $term}}
+ <li class="tool"><a href="{{$base}}?f=&file={{$term.name}}" class="fileas-link{{if $term.selected}} fileas-selected{{/if}}">{{$term.name}}</a></li>
+ {{/foreach}}
+ </ul>
+
+</div>
diff --git a/view/tpl/smarty3/filebrowser.tpl b/view/tpl/smarty3/filebrowser.tpl
new file mode 100644
index 000000000..787f7c0cd
--- /dev/null
+++ b/view/tpl/smarty3/filebrowser.tpl
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <script type="text/javascript" src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_popup.js"></script>
+ <style>
+ .panel_wrapper div.current{.overflow: auto; height: auto!important; }
+ .filebrowser.path { font-family: fixed; font-size: 10px; background-color: #f0f0ee; height:auto; overflow:auto;}
+ .filebrowser.path a { border-left: 1px solid #C0C0AA; background-color: #E0E0DD; display: block; float:left; padding: 0.3em 1em;}
+ .filebrowser ul{ list-style-type: none; padding:0px; }
+ .filebrowser.folders a { display: block; padding: 0.3em }
+ .filebrowser.folders a:hover { background-color: #f0f0ee; }
+ .filebrowser.files.image { overflow: auto; height: auto; }
+ .filebrowser.files.image img { height:50px;}
+ .filebrowser.files.image li { display: block; padding: 5px; float: left; }
+ .filebrowser.files.image span { display: none;}
+ .filebrowser.files.file img { height:16px; vertical-align: bottom;}
+ .filebrowser.files a { display: block; padding: 0.3em}
+ .filebrowser.files a:hover { background-color: #f0f0ee; }
+ .filebrowser a { text-decoration: none; }
+ </style>
+ <script>
+ var FileBrowserDialogue = {
+ init : function () {
+ // Here goes your code for setting your custom things onLoad.
+ },
+ mySubmit : function (URL) {
+ //var URL = document.my_form.my_field.value;
+ var win = tinyMCEPopup.getWindowArg("window");
+
+ // insert information now
+ win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = URL;
+
+ // are we an image browser
+ if (typeof(win.ImageDialog) != "undefined") {
+ // we are, so update image dimensions...
+ if (win.ImageDialog.getImageData)
+ win.ImageDialog.getImageData();
+
+ // ... and preview if necessary
+ if (win.ImageDialog.showPreviewImage)
+ win.ImageDialog.showPreviewImage(URL);
+ }
+
+ // close popup window
+ tinyMCEPopup.close();
+ }
+ }
+
+ tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue);
+ </script>
+ </head>
+ <body>
+
+ <div class="tabs">
+ <ul >
+ <li class="current"><span>FileBrowser</span></li>
+ </ul>
+ </div>
+ <div class="panel_wrapper">
+
+ <div id="general_panel" class="panel current">
+ <div class="filebrowser path">
+ {{foreach $path as $p}}<a href="{{$p.0}}">{{$p.1}}</a>{{/foreach}}
+ </div>
+ <div class="filebrowser folders">
+ <ul>
+ {{foreach $folders as $f}}<li><a href="{{$f.0}}/">{{$f.1}}</a></li>{{/foreach}}
+ </ul>
+ </div>
+ <div class="filebrowser files {{$type}}">
+ <ul>
+ {{foreach $files as $f}}
+ <li><a href="#" onclick="FileBrowserDialogue.mySubmit('{{$f.0}}'); return false;"><img src="{{$f.2}}"><span>{{$f.1}}</span></a></li>
+ {{/foreach}}
+ </ul>
+ </div>
+ </div>
+ </div>
+ <div class="mceActionPanel">
+ <input type="button" id="cancel" name="cancel" value="{{$cancel}}" onclick="tinyMCEPopup.close();" />
+ </div>
+ </body>
+
+</html>
diff --git a/view/tpl/smarty3/filer_dialog.tpl b/view/tpl/smarty3/filer_dialog.tpl
new file mode 100644
index 000000000..ae59ab713
--- /dev/null
+++ b/view/tpl/smarty3/filer_dialog.tpl
@@ -0,0 +1,4 @@
+{{include file="field_combobox.tpl"}}
+<div class="settings-submit-wrapper" >
+ <input id="filer_save" type="button" class="settings-submit" value="{{$submit}}" />
+</div>
diff --git a/view/tpl/smarty3/follow.tpl b/view/tpl/smarty3/follow.tpl
new file mode 100644
index 000000000..350f8d910
--- /dev/null
+++ b/view/tpl/smarty3/follow.tpl
@@ -0,0 +1,8 @@
+<div id="follow-sidebar" class="widget">
+ <h3>{{$connect}}</h3>
+ <div id="connect-desc">{{$desc}}</div>
+ <form action="follow" method="post" />
+ <input id="side-follow-url" type="text" name="url" size="24" title="{{$hint}}" /><input id="side-follow-submit" type="submit" name="submit" value="{{$follow}}" />
+ </form>
+</div>
+
diff --git a/view/tpl/smarty3/follow_slap.tpl b/view/tpl/smarty3/follow_slap.tpl
new file mode 100644
index 000000000..4222387fa
--- /dev/null
+++ b/view/tpl/smarty3/follow_slap.tpl
@@ -0,0 +1,25 @@
+ <entry>
+ <author>
+ <name>{{$name}}</name>
+ <uri>{{$profile_page}}</uri>
+ <link rel="photo" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}" />
+ <link rel="avatar" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}" />
+ </author>
+
+ <id>{{$item_id}}</id>
+ <title>{{$title}}</title>
+ <published>{{$published}}</published>
+ <content type="{{$type}}" >{{$content}}</content>
+
+ <as:actor>
+ <as:obj_type>http://activitystrea.ms/schema/1.0/person</as:obj_type>
+ <id>{{$profile_page}}</id>
+ <title></title>
+ <link rel="avatar" type="image/jpeg" media:width="175" media:height="175" href="{{$photo}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}"/>
+ <poco:preferredUsername>{{$nick}}</poco:preferredUsername>
+ <poco:displayName>{{$name}}</poco:displayName>
+ </as:actor>
+ <as:verb>{{$verb}}</as:verb>
+ {{$ostat_follow}}
+ </entry>
diff --git a/view/tpl/smarty3/generic_links_widget.tpl b/view/tpl/smarty3/generic_links_widget.tpl
new file mode 100644
index 000000000..8b4c67b6f
--- /dev/null
+++ b/view/tpl/smarty3/generic_links_widget.tpl
@@ -0,0 +1,11 @@
+<div class="widget{{if $class}} {{$class}}{{/if}}">
+ {{if $title}}<h3>{{$title}}</h3>{{/if}}
+ {{if $desc}}<div class="desc">{{$desc}}</div>{{/if}}
+
+ <ul>
+ {{foreach $items as $item}}
+ <li class="tool"><a href="{{$item.url}}" class="{{if $item.selected}}selected{{/if}}">{{$item.label}}</a></li>
+ {{/foreach}}
+ </ul>
+
+</div>
diff --git a/view/tpl/smarty3/group_drop.tpl b/view/tpl/smarty3/group_drop.tpl
new file mode 100644
index 000000000..670136db7
--- /dev/null
+++ b/view/tpl/smarty3/group_drop.tpl
@@ -0,0 +1,9 @@
+<div class="group-delete-wrapper button" id="group-delete-wrapper-{{$id}}" >
+ <a href="group/drop/{{$id}}?t={{$form_security_token}}"
+ onclick="return confirmDelete();"
+ id="group-delete-icon-{{$id}}"
+ class="icon drophide group-delete-icon"
+ onmouseover="imgbright(this);"
+ onmouseout="imgdull(this);" ></a>
+</div>
+<div class="group-delete-end"></div>
diff --git a/view/tpl/smarty3/group_edit.tpl b/view/tpl/smarty3/group_edit.tpl
new file mode 100644
index 000000000..e4fb987ac
--- /dev/null
+++ b/view/tpl/smarty3/group_edit.tpl
@@ -0,0 +1,23 @@
+<h2>{{$title}}</h2>
+
+
+<div id="group-edit-wrapper" >
+ <form action="group/{{$gid}}" id="group-edit-form" method="post" >
+ <input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+ {{include file="field_input.tpl" field=$gname}}
+ {{if $drop}}{{$drop}}{{/if}}
+ <div id="group-edit-submit-wrapper" >
+ <input type="submit" name="submit" value="{{$submit}}" >
+ </div>
+ <div id="group-edit-select-end" ></div>
+ </form>
+</div>
+
+
+{{if $groupeditor}}
+ <div id="group-update-wrapper">
+ {{include file="groupeditor.tpl"}}
+ </div>
+{{/if}}
+{{if $desc}}<div id="group-edit-desc">{{$desc}}</div>{{/if}}
diff --git a/view/tpl/smarty3/group_selection.tpl b/view/tpl/smarty3/group_selection.tpl
new file mode 100644
index 000000000..2223125ea
--- /dev/null
+++ b/view/tpl/smarty3/group_selection.tpl
@@ -0,0 +1,8 @@
+<div class="field custom">
+<label for="group-selection" id="group-selection-lbl">{{$label}}</label>
+<select name="group-selection" id="group-selection" >
+{{foreach $groups as $group}}
+<option value="{{$group.id}}" {{if $group.selected}}selected="selected"{{/if}} >{{$group.name}}</option>
+{{/foreach}}
+</select>
+</div>
diff --git a/view/tpl/smarty3/group_side.tpl b/view/tpl/smarty3/group_side.tpl
new file mode 100644
index 000000000..ebc820530
--- /dev/null
+++ b/view/tpl/smarty3/group_side.tpl
@@ -0,0 +1,33 @@
+<div class="widget" id="group-sidebar">
+<h3>{{$title}}</h3>
+
+<div id="sidebar-group-list">
+ <ul id="sidebar-group-ul">
+ {{foreach $groups as $group}}
+ <li class="sidebar-group-li">
+ {{if $group.cid}}
+ <input type="checkbox"
+ class="{{if $group.selected}}ticked{{else}}unticked {{/if}} action"
+ onclick="contactgroupChangeMember('{{$group.id}}','{{$group.cid}}');return true;"
+ {{if $group.ismember}}checked="checked"{{/if}}
+ />
+ {{/if}}
+ {{if $group.edit}}
+ <a class="groupsideedit" href="{{$group.edit.href}}" title="{{$edittext}}"><span id="edit-sidebar-group-element-{{$group.id}}" class="group-edit-icon iconspacer small-pencil"></span></a>
+ {{/if}}
+ <a id="sidebar-group-element-{{$group.id}}" class="sidebar-group-element {{if $group.selected}}group-selected{{/if}}" href="{{$group.href}}">{{$group.text}}</a>
+ </li>
+ {{/foreach}}
+ </ul>
+ </div>
+ <div id="sidebar-new-group">
+ <a href="group/new">{{$createtext}}</a>
+ </div>
+ {{if $ungrouped}}
+ <div id="sidebar-ungrouped">
+ <a href="nogroup">{{$ungrouped}}</a>
+ </div>
+ {{/if}}
+</div>
+
+
diff --git a/view/tpl/smarty3/groupeditor.tpl b/view/tpl/smarty3/groupeditor.tpl
new file mode 100644
index 000000000..c79bb0a2a
--- /dev/null
+++ b/view/tpl/smarty3/groupeditor.tpl
@@ -0,0 +1,16 @@
+<div id="group">
+<h3>{{$groupeditor.label_members}}</h3>
+<div id="group-members" class="contact_list">
+{{foreach $groupeditor.members as $c}} {{$c}} {{/foreach}}
+</div>
+<div id="group-members-end"></div>
+<hr id="group-separator" />
+</div>
+
+<div id="contacts">
+<h3>{{$groupeditor.label_contacts}}</h3>
+<div id="group-all-contacts" class="contact_list">
+{{foreach $groupeditor.contacts as $m}} {{$m}} {{/foreach}}
+</div>
+<div id="group-all-contacts-end"></div>
+</div>
diff --git a/view/tpl/smarty3/head.tpl b/view/tpl/smarty3/head.tpl
new file mode 100644
index 000000000..06650648d
--- /dev/null
+++ b/view/tpl/smarty3/head.tpl
@@ -0,0 +1,30 @@
+<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+<base href="{{$baseurl}}/" />
+<meta name="generator" content="{{$generator}}" />
+
+<!--[if IE]>
+<script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+<![endif]-->
+
+{{$head_css}}
+
+{{$js_strings}}
+
+{{$head_js}}
+
+<link rel="shortcut icon" href="{{$baseurl}}/images/friendica-32.png" />
+<link rel="search"
+ href="{{$baseurl}}/opensearch"
+ type="application/opensearchdescription+xml"
+ title="Search in Friendica" />
+
+
+<script>
+
+ var updateInterval = {{$update_interval}};
+ var localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}};
+
+</script>
+
+
+
diff --git a/view/tpl/smarty3/hide_comments.tpl b/view/tpl/smarty3/hide_comments.tpl
new file mode 100644
index 000000000..f4ed9c552
--- /dev/null
+++ b/view/tpl/smarty3/hide_comments.tpl
@@ -0,0 +1,4 @@
+<div class="hide-comments-outer">
+<span id="hide-comments-total-{{$id}}" class="hide-comments-total">{{$num_comments}}</span> <span id="hide-comments-{{$id}}" class="hide-comments fakelink" onclick="showHideComments({{$id}});">{{$hide_text}}</span>
+</div>
+<div id="collapsed-comments-{{$id}}" class="collapsed-comments" style="display: {{$display}};">
diff --git a/view/tpl/smarty3/install.tpl b/view/tpl/smarty3/install.tpl
new file mode 100644
index 000000000..81475f587
--- /dev/null
+++ b/view/tpl/smarty3/install.tpl
@@ -0,0 +1,10 @@
+
+<h1>{{$title}}</h1>
+<h2>{{$pass}}</h2>
+
+
+{{if $status}}
+<h3 class="error-message">{{$status}}</h3>
+{{/if}}
+
+{{$text}}
diff --git a/view/tpl/smarty3/install_checks.tpl b/view/tpl/smarty3/install_checks.tpl
new file mode 100644
index 000000000..2068df916
--- /dev/null
+++ b/view/tpl/smarty3/install_checks.tpl
@@ -0,0 +1,24 @@
+<h1>{{$title}}</h1>
+<h2>{{$pass}}</h2>
+<form action="{{$baseurl}}/index.php?q=setup" method="post">
+<table>
+{{foreach $checks as $check}}
+ <tr><td>{{$check.title}} </td><td><span class="icon s22 {{if $check.status}}on{{else}}{{if $check.required}}off{{else}}yellow{{/if}}{{/if}}"></td><td>{{if $check.required}}(required){{/if}}</td></tr>
+ {{if $check.help}}
+ <tr><td colspan="3"><blockquote>{{$check.help}}</blockquote></td></tr>
+ {{/if}}
+{{/foreach}}
+</table>
+
+{{if $phpath}}
+ <input type="hidden" name="phpath" value="{{$phpath}}">
+{{/if}}
+
+{{if $passed}}
+ <input type="hidden" name="pass" value="2">
+ <input type="submit" value="{{$next}}">
+{{else}}
+ <input type="hidden" name="pass" value="1">
+ <input type="submit" value="{{$reload}}">
+{{/if}}
+</form>
diff --git a/view/tpl/smarty3/install_db.tpl b/view/tpl/smarty3/install_db.tpl
new file mode 100644
index 000000000..5425b2c48
--- /dev/null
+++ b/view/tpl/smarty3/install_db.tpl
@@ -0,0 +1,30 @@
+
+<h1>{{$title}}</h1>
+<h2>{{$pass}}</h2>
+
+
+<p>
+{{$info_01}}<br>
+{{$info_02}}<br>
+{{$info_03}}
+</p>
+
+{{if $status}}
+<h3 class="error-message">{{$status}}</h3>
+{{/if}}
+
+<form id="install-form" action="{{$baseurl}}/setup" method="post">
+
+<input type="hidden" name="phpath" value="{{$phpath}}" />
+<input type="hidden" name="pass" value="3" />
+
+{{include file="field_input.tpl" field=$dbhost}}
+{{include file="field_input.tpl" field=$dbuser}}
+{{include file="field_password.tpl" field=$dbpass}}
+{{include file="field_input.tpl" field=$dbdata}}
+
+
+<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+
diff --git a/view/tpl/smarty3/install_settings.tpl b/view/tpl/smarty3/install_settings.tpl
new file mode 100644
index 000000000..9fd93239a
--- /dev/null
+++ b/view/tpl/smarty3/install_settings.tpl
@@ -0,0 +1,27 @@
+
+<h1>{{$title}}</h1>
+<h2>{{$pass}}</h2>
+
+
+{{if $status}}
+<h3 class="error-message">{{$status}}</h3>
+{{/if}}
+
+<form id="install-form" action="{{$baseurl}}/setup" method="post">
+
+<input type="hidden" name="phpath" value="{{$phpath}}" />
+<input type="hidden" name="dbhost" value="{{$dbhost}}" />
+<input type="hidden" name="dbuser" value="{{$dbuser}}" />
+<input type="hidden" name="dbpass" value="{{$dbpass}}" />
+<input type="hidden" name="dbdata" value="{{$dbdata}}" />
+<input type="hidden" name="pass" value="4" />
+
+{{include file="field_input.tpl" field=$adminmail}}
+{{include file="field_input.tpl" field=$siteurl}}
+
+{{$timezone}}
+
+<input id="install-submit" type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+
diff --git a/view/tpl/smarty3/intros.tpl b/view/tpl/smarty3/intros.tpl
new file mode 100644
index 000000000..6132bfc75
--- /dev/null
+++ b/view/tpl/smarty3/intros.tpl
@@ -0,0 +1,28 @@
+
+<div class="intro-wrapper" id="intro-{{$contact_id}}" >
+
+<p class="intro-desc">{{$str_notifytype}} {{$notify_type}}</p>
+<div class="intro-fullname" id="intro-fullname-{{$contact_id}}" >{{$fullname}}</div>
+<a class="intro-url-link" id="intro-url-link-{{$contact_id}}" href="{{$url}}" ><img id="photo-{{$contact_id}}" class="intro-photo" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" /></a>
+<div class="intro-knowyou">{{$knowyou}}</div>
+<div class="intro-note" id="intro-note-{{$contact_id}}">{{$note}}</div>
+<div class="intro-wrapper-end" id="intro-wrapper-end-{{$contact_id}}"></div>
+<form class="intro-form" action="notifications/{{$intro_id}}" method="post">
+<input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" />
+<input class="intro-submit-discard" type="submit" name="submit" value="{{$discard}}" />
+</form>
+<div class="intro-form-end"></div>
+
+<form class="intro-approve-form" action="dfrn_confirm" method="post">
+{{include file="field_checkbox.tpl" field=$hidden}}
+{{include file="field_checkbox.tpl" field=$activity}}
+<input type="hidden" name="dfrn_id" value="{{$dfrn_id}}" >
+<input type="hidden" name="intro_id" value="{{$intro_id}}" >
+<input type="hidden" name="contact_id" value="{{$contact_id}}" >
+
+{{$dfrn_text}}
+
+<input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" />
+</form>
+</div>
+<div class="intro-end"></div>
diff --git a/view/tpl/smarty3/invite.tpl b/view/tpl/smarty3/invite.tpl
new file mode 100644
index 000000000..117ee7cd6
--- /dev/null
+++ b/view/tpl/smarty3/invite.tpl
@@ -0,0 +1,27 @@
+<form action="invite" method="post" id="invite-form" >
+<div id="invite-wrapper">
+
+<h3>{{$invite}}</h3>
+
+<div id="invite-recipient-text">
+{{$addr_text}}
+</div>
+
+<div id="invite-recipient-textarea">
+<textarea id="invite-recipients" name="recipients" rows="8" cols="32" ></textarea>
+</div>
+
+<div id="invite-message-text">
+{{$msg_text}}
+</div>
+
+<div id="invite-message-textarea">
+<textarea id="invite-message" name="message" rows="10" cols="72" >{{$default_message}}</textarea>
+</div>
+
+<div id="invite-submit-wrapper">
+<input type="submit" name="submit" value="{{$submit}}" />
+</div>
+
+</div>
+</form>
diff --git a/view/tpl/smarty3/jot-header.tpl b/view/tpl/smarty3/jot-header.tpl
new file mode 100644
index 000000000..26c8f2a86
--- /dev/null
+++ b/view/tpl/smarty3/jot-header.tpl
@@ -0,0 +1,318 @@
+
+<script language="javascript" type="text/javascript">
+
+var editor=false;
+var textlen = 0;
+var plaintext = '{{$editselect}}';
+
+function initEditor(cb){
+ if (editor==false){
+ $("#profile-jot-text-loading").show();
+ if(plaintext == 'none') {
+ $("#profile-jot-text-loading").hide();
+ $("#profile-jot-text").css({ 'height': 200, 'color': '#000' });
+ $("#profile-jot-text").contact_autocomplete(baseurl+"/acl");
+ editor = true;
+ $("a#jot-perms-icon").fancybox({
+ 'transitionIn' : 'elastic',
+ 'transitionOut' : 'elastic'
+ });
+ $(".jothidden").show();
+ if (typeof cb!="undefined") cb();
+ return;
+ }
+ tinyMCE.init({
+ theme : "advanced",
+ mode : "specific_textareas",
+ editor_selector: {{$editselect}},
+ auto_focus: "profile-jot-text",
+ plugins : "bbcode,paste,autoresize, inlinepopups",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ convert_urls: false,
+ content_css: "{{$baseurl}}/view/custom_tinymce.css",
+ theme_advanced_path : false,
+ file_browser_callback : "fcFileBrowser",
+ setup : function(ed) {
+ cPopup = null;
+ ed.onKeyDown.add(function(ed,e) {
+ if(cPopup !== null)
+ cPopup.onkey(e);
+ });
+
+ ed.onKeyUp.add(function(ed, e) {
+ var txt = tinyMCE.activeEditor.getContent();
+ match = txt.match(/@([^ \n]+)$/);
+ if(match!==null) {
+ if(cPopup === null) {
+ cPopup = new ACPopup(this,baseurl+"/acl");
+ }
+ if(cPopup.ready && match[1]!==cPopup.searchText) cPopup.search(match[1]);
+ if(! cPopup.ready) cPopup = null;
+ }
+ else {
+ if(cPopup !== null) { cPopup.close(); cPopup = null; }
+ }
+
+ textlen = txt.length;
+ if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
+ $('#profile-jot-desc').html(ispublic);
+ }
+ else {
+ $('#profile-jot-desc').html('&nbsp;');
+ }
+
+ //Character count
+
+ if(textlen <= 140) {
+ $('#character-counter').removeClass('red');
+ $('#character-counter').removeClass('orange');
+ $('#character-counter').addClass('grey');
+ }
+ if((textlen > 140) && (textlen <= 420)) {
+ $('#character-counter').removeClass('grey');
+ $('#character-counter').removeClass('red');
+ $('#character-counter').addClass('orange');
+ }
+ if(textlen > 420) {
+ $('#character-counter').removeClass('grey');
+ $('#character-counter').removeClass('orange');
+ $('#character-counter').addClass('red');
+ }
+ $('#character-counter').text(textlen);
+ });
+
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ $("#profile-jot-text-loading").hide();
+ $(".jothidden").show();
+ if (typeof cb!="undefined") cb();
+ });
+
+ }
+ });
+
+ editor = true;
+ // setup acl popup
+ $("a#jot-perms-icon").fancybox({
+ 'transitionIn' : 'elastic',
+ 'transitionOut' : 'elastic'
+ });
+ } else {
+ if (typeof cb!="undefined") cb();
+ }
+}
+
+function enableOnUser(){
+ if (editor) return;
+ $(this).val("");
+ initEditor();
+}
+
+</script>
+<script type="text/javascript" src="{{$baseurl}}/js/ajaxupload.js" ></script>
+<script>
+ var ispublic = '{{$ispublic}}';
+
+ $(document).ready(function() {
+
+ /* enable tinymce on focus and click */
+ $("#profile-jot-text").focus(enableOnUser);
+ $("#profile-jot-text").click(enableOnUser);
+
+ var uploader = new window.AjaxUpload(
+ 'wall-image-upload',
+ { action: 'wall_upload/{{$nickname}}',
+ name: 'userfile',
+ onSubmit: function(file,ext) { $('#profile-rotator').show(); },
+ onComplete: function(file,response) {
+ addeditortext(response);
+ $('#profile-rotator').hide();
+ }
+ }
+ );
+ var file_uploader = new window.AjaxUpload(
+ 'wall-file-upload',
+ { action: 'wall_attach/{{$nickname}}',
+ name: 'userfile',
+ onSubmit: function(file,ext) { $('#profile-rotator').show(); },
+ onComplete: function(file,response) {
+ addeditortext(response);
+ $('#profile-rotator').hide();
+ }
+ }
+ );
+
+
+ });
+
+ function deleteCheckedItems() {
+ var checkedstr = '';
+
+ $('.item-select').each( function() {
+ if($(this).is(':checked')) {
+ if(checkedstr.length != 0) {
+ checkedstr = checkedstr + ',' + $(this).val();
+ }
+ else {
+ checkedstr = $(this).val();
+ }
+ }
+ });
+ $.post('item', { dropitems: checkedstr }, function(data) {
+ window.location.reload();
+ });
+ }
+
+ function jotGetLink() {
+ reply = prompt("{{$linkurl}}");
+ if(reply && reply.length) {
+ reply = bin2hex(reply);
+ $('#profile-rotator').show();
+ $.get('parse_url?binurl=' + reply, function(data) {
+ addeditortext(data);
+ $('#profile-rotator').hide();
+ });
+ }
+ }
+
+ function jotVideoURL() {
+ reply = prompt("{{$vidurl}}");
+ if(reply && reply.length) {
+ addeditortext('[video]' + reply + '[/video]');
+ }
+ }
+
+ function jotAudioURL() {
+ reply = prompt("{{$audurl}}");
+ if(reply && reply.length) {
+ addeditortext('[audio]' + reply + '[/audio]');
+ }
+ }
+
+
+ function jotGetLocation() {
+ reply = prompt("{{$whereareu}}", $('#jot-location').val());
+ if(reply && reply.length) {
+ $('#jot-location').val(reply);
+ }
+ }
+
+ function jotShare(id) {
+ if ($('#jot-popup').length != 0) $('#jot-popup').show();
+
+ $('#like-rotator-' + id).show();
+ $.get('share/' + id, function(data) {
+ if (!editor) $("#profile-jot-text").val("");
+ initEditor(function(){
+ addeditortext(data);
+ $('#like-rotator-' + id).hide();
+ $(window).scrollTop(0);
+ });
+
+ });
+ }
+
+ function linkdropper(event) {
+ var linkFound = event.dataTransfer.types.contains("text/uri-list");
+ if(linkFound)
+ event.preventDefault();
+ }
+
+ function linkdrop(event) {
+ var reply = event.dataTransfer.getData("text/uri-list");
+ event.target.textContent = reply;
+ event.preventDefault();
+ if(reply && reply.length) {
+ reply = bin2hex(reply);
+ $('#profile-rotator').show();
+ $.get('parse_url?binurl=' + reply, function(data) {
+ if (!editor) $("#profile-jot-text").val("");
+ initEditor(function(){
+ addeditortext(data);
+ $('#profile-rotator').hide();
+ });
+ });
+ }
+ }
+
+ function itemTag(id) {
+ reply = prompt("{{$term}}");
+ if(reply && reply.length) {
+ reply = reply.replace('#','');
+ if(reply.length) {
+
+ commentBusy = true;
+ $('body').css('cursor', 'wait');
+
+ $.get('tagger/' + id + '?term=' + reply);
+ if(timer) clearTimeout(timer);
+ timer = setTimeout(NavUpdate,3000);
+ liking = 1;
+ }
+ }
+ }
+
+ function itemFiler(id) {
+
+ var bordercolor = $("input").css("border-color");
+
+ $.get('filer/', function(data){
+ $.fancybox(data);
+ $("#id_term").keypress(function(){
+ $(this).css("border-color",bordercolor);
+ })
+ $("#select_term").change(function(){
+ $("#id_term").css("border-color",bordercolor);
+ })
+
+ $("#filer_save").click(function(e){
+ e.preventDefault();
+ reply = $("#id_term").val();
+ if(reply && reply.length) {
+ commentBusy = true;
+ $('body').css('cursor', 'wait');
+ $.get('filer/' + id + '?term=' + reply, NavUpdate);
+// if(timer) clearTimeout(timer);
+// timer = setTimeout(NavUpdate,3000);
+ liking = 1;
+ $.fancybox.close();
+ } else {
+ $("#id_term").css("border-color","#FF0000");
+ }
+ return false;
+ });
+ });
+
+ }
+
+ function jotClearLocation() {
+ $('#jot-coord').val('');
+ $('#profile-nolocation-wrapper').hide();
+ }
+
+ function addeditortext(data) {
+ if(plaintext == 'none') {
+ var currentText = $("#profile-jot-text").val();
+ $("#profile-jot-text").val(currentText + data);
+ }
+ else
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ }
+
+ {{$geotag}}
+
+</script>
+
diff --git a/view/tpl/smarty3/jot.tpl b/view/tpl/smarty3/jot.tpl
new file mode 100644
index 000000000..7c35dd8d7
--- /dev/null
+++ b/view/tpl/smarty3/jot.tpl
@@ -0,0 +1,86 @@
+
+<div id="profile-jot-wrapper" >
+ <div id="profile-jot-banner-wrapper">
+ <div id="profile-jot-desc" >&nbsp;</div>
+ <div id="character-counter" class="grey"></div>
+ </div>
+ <div id="profile-jot-banner-end"></div>
+
+ <form id="profile-jot-form" action="{{$action}}" method="post" >
+ <input type="hidden" name="type" value="{{$ptyp}}" />
+ <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
+ <input type="hidden" name="return" value="{{$return_path}}" />
+ <input type="hidden" name="location" id="jot-location" value="{{$defloc}}" />
+ <input type="hidden" name="coord" id="jot-coord" value="" />
+ <input type="hidden" name="post_id" value="{{$post_id}}" />
+ <input type="hidden" name="preview" id="jot-preview" value="0" />
+ <div id="jot-title-wrap"><input name="title" id="jot-title" type="text" placeholder="{{$placeholdertitle}}" value="{{$title}}" class="jothidden" style="display:none"></div>
+ {{if $catsenabled}}
+ <div id="jot-category-wrap"><input name="category" id="jot-category" type="text" placeholder="{{$placeholdercategory}}" value="{{$category}}" class="jothidden" style="display:none" /></div>
+ {{/if}}
+ <div id="jot-text-wrap">
+ <img id="profile-jot-text-loading" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ <textarea rows="5" cols="64" class="profile-jot-text" id="profile-jot-text" name="body" >{{if $content}}{{$content}}{{else}}{{$share}}{{/if}}</textarea>
+ </div>
+
+<div id="profile-jot-submit-wrapper" class="jothidden">
+ <input type="submit" id="profile-jot-submit" name="submit" value="{{$share}}" />
+
+ <div id="profile-upload-wrapper" style="display: {{$visitor}};" >
+ <div id="wall-image-upload-div" ><a href="#" onclick="return false;" id="wall-image-upload" class="icon camera" title="{{$upload}}"></a></div>
+ </div>
+ <div id="profile-attach-wrapper" style="display: {{$visitor}};" >
+ <div id="wall-file-upload-div" ><a href="#" onclick="return false;" id="wall-file-upload" class="icon attach" title="{{$attach}}"></a></div>
+ </div>
+
+ <div id="profile-link-wrapper" style="display: {{$visitor}};" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
+ <a id="profile-link" class="icon link" title="{{$weblink}}" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
+ </div>
+ <div id="profile-video-wrapper" style="display: {{$visitor}};" >
+ <a id="profile-video" class="icon video" title="{{$video}}" onclick="jotVideoURL();return false;"></a>
+ </div>
+ <div id="profile-audio-wrapper" style="display: {{$visitor}};" >
+ <a id="profile-audio" class="icon audio" title="{{$audio}}" onclick="jotAudioURL();return false;"></a>
+ </div>
+ <div id="profile-location-wrapper" style="display: {{$visitor}};" >
+ <a id="profile-location" class="icon globe" title="{{$setloc}}" onclick="jotGetLocation();return false;"></a>
+ </div>
+ <div id="profile-nolocation-wrapper" style="display: none;" >
+ <a id="profile-nolocation" class="icon noglobe" title="{{$noloc}}" onclick="jotClearLocation();return false;"></a>
+ </div>
+
+ <div id="profile-jot-perms" class="profile-jot-perms" style="display: {{$pvisit}};" >
+ <a href="#profile-jot-acl-wrapper" id="jot-perms-icon" class="icon {{$lockstate}}" title="{{$permset}}" ></a>{{$bang}}
+ </div>
+
+ {{if $preview}}<span onclick="preview_post();" id="jot-preview-link" class="fakelink">{{$preview}}</span>{{/if}}
+
+
+ <div id="profile-jot-perms-end"></div>
+
+
+ <div id="profile-jot-plugin-wrapper">
+ {{$jotplugins}}
+ </div>
+
+ <div id="profile-rotator-wrapper" style="display: {{$visitor}};" >
+ <img id="profile-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ </div>
+
+ <div id="jot-preview-content" style="display:none;"></div>
+
+ <div style="display: none;">
+ <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
+ {{$acl}}
+ <hr style="clear:both"/>
+ {{$jotnets}}
+ </div>
+ </div>
+
+
+</div>
+
+<div id="profile-jot-end"></div>
+</form>
+</div>
+ {{if $content}}<script>initEditor();</script>{{/if}}
diff --git a/view/tpl/smarty3/jot_geotag.tpl b/view/tpl/smarty3/jot_geotag.tpl
new file mode 100644
index 000000000..b0f71e73b
--- /dev/null
+++ b/view/tpl/smarty3/jot_geotag.tpl
@@ -0,0 +1,8 @@
+
+ if(navigator.geolocation) {
+ navigator.geolocation.getCurrentPosition(function(position) {
+ $('#jot-coord').val(position.coords.latitude + ' ' + position.coords.longitude);
+ $('#profile-nolocation-wrapper').show();
+ });
+ }
+
diff --git a/view/tpl/smarty3/js_strings.tpl b/view/tpl/smarty3/js_strings.tpl
new file mode 100644
index 000000000..5316f52ab
--- /dev/null
+++ b/view/tpl/smarty3/js_strings.tpl
@@ -0,0 +1,34 @@
+
+<script>
+
+ var aStr = {
+
+ 'delitem' : '{{$delitem}}',
+ 'comment' : '{{$comment}}',
+ 'showmore' : '{{$showmore}}',
+ 'showfewer' : '{{$showfewer}}',
+ 'pwshort' : '{{$pwshort}}',
+ 'pwnomatch' : '{{$pwnomatch}}',
+ 'everybody' : '{{$everybody}}',
+
+ 't01' : {{$t01}},
+ 't02' : {{$t02}},
+ 't03' : '{{$t03}}',
+ 't04' : '{{$t04}}',
+ 't05' : '{{$t05}}',
+ 't06' : '{{$t06}}',
+ 't07' : '{{$t07}}',
+ 't08' : '{{$t08}}',
+ 't09' : '{{$t09}}',
+ 't10' : '{{$t10}}',
+ 't11' : '{{$t11}}',
+ 't12' : '{{$t12}}',
+ 't13' : '{{$t13}}',
+ 't14' : '{{$t14}}',
+ 't15' : '{{$t15}}',
+ 't16' : '{{$t16}}',
+ 't17' : '{{$t17}}',
+ };
+
+</script>
+
diff --git a/view/tpl/smarty3/lang_selector.tpl b/view/tpl/smarty3/lang_selector.tpl
new file mode 100644
index 000000000..945cbf51e
--- /dev/null
+++ b/view/tpl/smarty3/lang_selector.tpl
@@ -0,0 +1,10 @@
+<div id="lang-select-icon" class="icon s22 language" title="{{$title}}" onclick="openClose('language-selector');" ></div>
+<div id="language-selector" style="display: none;" >
+ <form action="#" method="post" >
+ <select name="system_language" onchange="this.form.submit();" >
+ {{foreach $langs.0 as $v=>$l}}
+ <option value="{{$v}}" {{if $v==$langs.1}}selected="selected"{{/if}}>{{$l}}</option>
+ {{/foreach}}
+ </select>
+ </form>
+</div>
diff --git a/view/tpl/smarty3/like_noshare.tpl b/view/tpl/smarty3/like_noshare.tpl
new file mode 100644
index 000000000..b01064add
--- /dev/null
+++ b/view/tpl/smarty3/like_noshare.tpl
@@ -0,0 +1,5 @@
+<div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$id}}">
+ <a href="#" class="icon like" title="{{$likethis}}" onclick="dolike({{$id}},'like'); return false"></a>
+ <a href="#" class="icon dislike" title="{{$nolike}}" onclick="dolike({{$id}},'dislike'); return false"></a>
+ <img id="like-rotator-{{$id}}" class="like-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+</div>
diff --git a/view/tpl/smarty3/login.tpl b/view/tpl/smarty3/login.tpl
new file mode 100644
index 000000000..dbd193017
--- /dev/null
+++ b/view/tpl/smarty3/login.tpl
@@ -0,0 +1,29 @@
+
+<form action="{{$dest_url}}" id="{{$form_id}}" method="post" >
+ <input type="hidden" name="auth-params" value="login" />
+
+ <div id="login_standard">
+ {{include file="field_input.tpl" field=$lname}}
+ {{include file="field_password.tpl" field=$lpassword}}
+ </div>
+
+ <div id="login-extra-links">
+ {{if $register}}<a href="{{$register.link}}" title="{{$register.title}}" id="register-link">{{$register.desc}}</a>{{/if}}
+ <a href="lostpass" title="{{$lostpass}}" id="lost-password-link" >{{$lostlink}}</a>
+ </div>
+
+ <div id="login-standard-end"></div>
+
+ <div id="login-submit-wrapper" >
+ <input type="submit" name="submit" id="login-submit-button" value="{{$login}}" />
+ </div>
+
+ {{foreach $hiddens as $k=>$v}}
+ <input type="hidden" name="{{$k}}" value="{{$v}}" />
+ {{/foreach}}
+
+
+</form>
+
+
+<script type="text/javascript"> $(document).ready(function() { $("#id_{{$lname.0}}").focus();} );</script>
diff --git a/view/tpl/smarty3/logout.tpl b/view/tpl/smarty3/logout.tpl
new file mode 100644
index 000000000..7548ed196
--- /dev/null
+++ b/view/tpl/smarty3/logout.tpl
@@ -0,0 +1,6 @@
+<form action="{{$dest_url}}" method="post" >
+<div class="logout-wrapper">
+<input type="hidden" name="auth-params" value="logout" />
+<input type="submit" name="submit" id="logout-button" value="{{$logout}}" />
+</div>
+</form>
diff --git a/view/tpl/smarty3/lostpass.tpl b/view/tpl/smarty3/lostpass.tpl
new file mode 100644
index 000000000..f6fdb28d7
--- /dev/null
+++ b/view/tpl/smarty3/lostpass.tpl
@@ -0,0 +1,18 @@
+<h3>{{$title}}</h3>
+
+<p id="lostpass-desc">
+{{$desc}}
+</p>
+
+<form action="lostpass" method="post" >
+<div id="login-name-wrapper">
+ <label for="login-name" id="label-login-name">{{$name}}</label>
+ <input type="text" maxlength="60" name="login-name" id="login-name" value="" />
+</div>
+<div id="login-extra-end"></div>
+<div id="login-submit-wrapper" >
+ <input type="submit" name="submit" id="lostpass-submit-button" value="{{$submit}}" />
+</div>
+<div id="login-submit-end"></div>
+</form>
+
diff --git a/view/tpl/smarty3/magicsig.tpl b/view/tpl/smarty3/magicsig.tpl
new file mode 100644
index 000000000..78d8bbbd3
--- /dev/null
+++ b/view/tpl/smarty3/magicsig.tpl
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
+<me:data type="application/atom+xml">
+{{$data}}
+</me:data>
+<me:encoding>{{$encoding}}</me:encoding>
+<me:alg>{{$algorithm}}</me:alg>
+<me:sig key_id="{{$keyhash}}">{{$signature}}</me:sig>
+</me:env>
diff --git a/view/tpl/smarty3/mail_conv.tpl b/view/tpl/smarty3/mail_conv.tpl
new file mode 100644
index 000000000..1bff55108
--- /dev/null
+++ b/view/tpl/smarty3/mail_conv.tpl
@@ -0,0 +1,14 @@
+<div class="mail-conv-outside-wrapper">
+ <div class="mail-conv-sender" >
+ <a href="{{$mail.from_url}}" class="mail-conv-sender-url" ><img class="mframe mail-conv-sender-photo{{$mail.sparkle}}" src="{{$mail.from_photo}}" heigth="80" width="80" alt="{{$mail.from_name}}" /></a>
+ </div>
+ <div class="mail-conv-detail" >
+ <div class="mail-conv-sender-name" >{{$mail.from_name}}</div>
+ <div class="mail-conv-date">{{$mail.date}}</div>
+ <div class="mail-conv-subject">{{$mail.subject}}</div>
+ <div class="mail-conv-body">{{$mail.body}}</div>
+ <div class="mail-conv-delete-wrapper" id="mail-conv-delete-wrapper-{{$mail.id}}" ><a href="message/drop/{{$mail.id}}" class="icon drophide delete-icon mail-list-delete-icon" onclick="return confirmDelete();" title="{{$mail.delete}}" id="mail-conv-delete-icon-{{$mail.id}}" class="mail-conv-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-conv-delete-end"></div>
+ <div class="mail-conv-outside-wrapper-end"></div>
+</div>
+</div>
+<hr class="mail-conv-break" />
diff --git a/view/tpl/smarty3/mail_display.tpl b/view/tpl/smarty3/mail_display.tpl
new file mode 100644
index 000000000..76e4d1859
--- /dev/null
+++ b/view/tpl/smarty3/mail_display.tpl
@@ -0,0 +1,10 @@
+
+{{foreach $mails as $mail}}
+ {{include file="mail_conv.tpl"}}
+{{/foreach}}
+
+{{if $canreply}}
+{{include file="prv_message.tpl"}}
+{{else}}
+{{$unknown_text}}
+{{/if}} \ No newline at end of file
diff --git a/view/tpl/smarty3/mail_head.tpl b/view/tpl/smarty3/mail_head.tpl
new file mode 100644
index 000000000..1cd7145e7
--- /dev/null
+++ b/view/tpl/smarty3/mail_head.tpl
@@ -0,0 +1,3 @@
+<h3>{{$messages}}</h3>
+
+{{$tab_content}}
diff --git a/view/tpl/smarty3/mail_list.tpl b/view/tpl/smarty3/mail_list.tpl
new file mode 100644
index 000000000..b08c2ca7a
--- /dev/null
+++ b/view/tpl/smarty3/mail_list.tpl
@@ -0,0 +1,16 @@
+<div class="mail-list-outside-wrapper">
+ <div class="mail-list-sender" >
+ <a href="{{$from_url}}" class="mail-list-sender-url" ><img class="mail-list-sender-photo{{$sparkle}}" src="{{$from_photo}}" height="80" width="80" alt="{{$from_name}}" /></a>
+ </div>
+ <div class="mail-list-detail">
+ <div class="mail-list-sender-name" >{{$from_name}}</div>
+ <div class="mail-list-date">{{$date}}</div>
+ <div class="mail-list-subject"><a href="message/{{$id}}" class="mail-list-link">{{$subject}}</a></div>
+ <div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-{{$id}}" >
+ <a href="message/dropconv/{{$id}}" onclick="return confirmDelete();" title="{{$delete}}" class="icon drophide mail-list-delete delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+ </div>
+</div>
+</div>
+<div class="mail-list-delete-end"></div>
+
+<div class="mail-list-outside-wrapper-end"></div>
diff --git a/view/tpl/smarty3/main_slider.tpl b/view/tpl/smarty3/main_slider.tpl
new file mode 100644
index 000000000..04ce72733
--- /dev/null
+++ b/view/tpl/smarty3/main_slider.tpl
@@ -0,0 +1,23 @@
+<div id="main-slider" class="slider" ><input id="main-range" type="text" name="cminmax" value="{{$val}}" /></div>
+<script>
+ $("#main-range").slider({ from: 0, to: 99, step: 1, scale: ['{{$me}}', '|', '{{$intimate}}', '|', '{{$friends}}', '|', '{{$oldfriends}}', '|', '{{$acquaintances}}', '|', '{{$world}}' ], onstatechange: function(v) {
+ var carr = v.split(";");
+ network_cmin = carr[0];
+ network_cmax = carr[1];
+ networkRefresh();
+ } });
+
+ var slideTimer = null;
+ function networkRefresh() {
+ if((document.readyState !== "complete") || (slideTimer !== null))
+ return;
+ setTimeout(function() { $("#profile-jot-text-loading").show(); }, 1000 );
+ slideTimer = setTimeout(networkTimerRefresh,2000);
+ }
+
+ function networkTimerRefresh() {
+ slideTimer = null;
+ page_load = true;
+ liveUpdate();
+ }
+</script>
diff --git a/view/tpl/smarty3/match.tpl b/view/tpl/smarty3/match.tpl
new file mode 100644
index 000000000..0688ca26b
--- /dev/null
+++ b/view/tpl/smarty3/match.tpl
@@ -0,0 +1,16 @@
+<div class="profile-match-wrapper">
+ <div class="profile-match-photo">
+ <a href="{{$url}}">
+ <img src="{{$photo}}" alt="{{$name}}" title="{{$name}}[{{$tags}}]" />
+ </a>
+ </div>
+ <div class="profile-match-break"></div>
+ <div class="profile-match-name">
+ <a href="{{$url}}" title="{{$name}}[{{$tags}}]">{{$name}}</a>
+ </div>
+ <div class="profile-match-end"></div>
+ {{if $connlnk}}
+ <div class="profile-match-connect"><a href="{{$connlnk}}" title="{{$conntxt}}">{{$conntxt}}</a></div>
+ {{/if}}
+
+</div>
diff --git a/view/tpl/smarty3/message_side.tpl b/view/tpl/smarty3/message_side.tpl
new file mode 100644
index 000000000..ba7e28272
--- /dev/null
+++ b/view/tpl/smarty3/message_side.tpl
@@ -0,0 +1,10 @@
+<div id="message-sidebar" class="widget">
+ <div id="message-new"><a href="{{$new.url}}" class="{{if $new.sel}}newmessage-selected{{/if}}">{{$new.label}}</a> </div>
+
+ <ul class="message-ul">
+ {{foreach $tabs as $t}}
+ <li class="tool"><a href="{{$t.url}}" class="message-link{{if $t.sel}}message-selected{{/if}}">{{$t.label}}</a></li>
+ {{/foreach}}
+ </ul>
+
+</div>
diff --git a/view/tpl/smarty3/moderated_comment.tpl b/view/tpl/smarty3/moderated_comment.tpl
new file mode 100644
index 000000000..79ce8f99b
--- /dev/null
+++ b/view/tpl/smarty3/moderated_comment.tpl
@@ -0,0 +1,34 @@
+ <div class="comment-wwedit-wrapper" id="comment-edit-wrapper-{{$id}}" style="display: block;">
+ <form class="comment-edit-form" id="comment-edit-form-{{$id}}" action="item" method="post" onsubmit="post_comment({{$id}}); return false;">
+ <input type="hidden" name="type" value="{{$type}}" />
+ <input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
+ <input type="hidden" name="parent" value="{{$parent}}" />
+ <input type="hidden" name="return" value="{{$return_path}}" />
+ <input type="hidden" name="jsreload" value="{{$jsreload}}" />
+ <input type="hidden" name="preview" id="comment-preview-inp-{{$id}}" value="0" />
+
+ <div class="comment-edit-photo" id="comment-edit-photo-{{$id}}" >
+ <a class="comment-edit-photo-link" href="{{$mylink}}" title="{{$mytitle}}"><img class="my-comment-photo" src="{{$myphoto}}" alt="{{$mytitle}}" title="{{$mytitle}}" /></a>
+ </div>
+ <div class="comment-edit-photo-end"></div>
+ <div id="mod-cmnt-wrap-{{$id}}" class="mod-cmnt-wrap" style="display:none">
+ <div id="mod-cmnt-name-lbl-{{$id}}" class="mod-cmnt-name-lbl">{{$lbl_modname}}</div>
+ <input type="text" id="mod-cmnt-name-{{$id}}" class="mod-cmnt-name" name="mod-cmnt-name" value="{{$modname}}" />
+ <div id="mod-cmnt-email-lbl-{{$id}}" class="mod-cmnt-email-lbl">{{$lbl_modemail}}</div>
+ <input type="text" id="mod-cmnt-email-{{$id}}" class="mod-cmnt-email" name="mod-cmnt-email" value="{{$modemail}}" />
+ <div id="mod-cmnt-url-lbl-{{$id}}" class="mod-cmnt-url-lbl">{{$lbl_modurl}}</div>
+ <input type="text" id="mod-cmnt-url-{{$id}}" class="mod-cmnt-url" name="mod-cmnt-url" value="{{$modurl}}" />
+ </div>
+ <textarea id="comment-edit-text-{{$id}}" class="comment-edit-text-empty" name="body" onFocus="commentOpen(this,{{$id}});" onBlur="commentClose(this,{{$id}});" >{{$comment}}</textarea>
+
+ <div class="comment-edit-text-end"></div>
+ <div class="comment-edit-submit-wrapper" id="comment-edit-submit-wrapper-{{$id}}" style="display: none;" >
+ <input type="submit" onclick="post_comment({{$id}}); return false;" id="comment-edit-submit-{{$id}}" class="comment-edit-submit" name="submit" value="{{$submit}}" />
+ <span onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" class="fakelink">{{$preview}}</span>
+ <div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
+ </div>
+
+ <div class="comment-edit-end"></div>
+ </form>
+
+ </div>
diff --git a/view/tpl/smarty3/mood_content.tpl b/view/tpl/smarty3/mood_content.tpl
new file mode 100644
index 000000000..63eaa2d8d
--- /dev/null
+++ b/view/tpl/smarty3/mood_content.tpl
@@ -0,0 +1,20 @@
+<h3>{{$title}}</h3>
+
+<div id="mood-desc">{{$desc}}</div>
+
+<form action="mood" method="get">
+<br />
+<br />
+
+<input id="mood-parent" type="hidden" value="{{$parent}}" name="parent" />
+
+<select name="verb" id="mood-verb-select" >
+{{foreach $verbs as $v}}
+<option value="{{$v.0}}">{{$v.1}}</option>
+{{/foreach}}
+</select>
+<br />
+<br />
+<input type="submit" name="submit" value="{{$submit}}" />
+</form>
+
diff --git a/view/tpl/smarty3/msg-header.tpl b/view/tpl/smarty3/msg-header.tpl
new file mode 100644
index 000000000..0d2ca72be
--- /dev/null
+++ b/view/tpl/smarty3/msg-header.tpl
@@ -0,0 +1,97 @@
+
+<script language="javascript" type="text/javascript" src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+<script language="javascript" type="text/javascript">
+
+var plaintext = '{{$editselect}}';
+
+if(plaintext != 'none') {
+ tinyMCE.init({
+ theme : "advanced",
+ mode : "specific_textareas",
+ editor_selector: /(profile-jot-text|prvmail-text)/,
+ plugins : "bbcode,paste",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ convert_urls: false,
+ content_css: "{{$baseurl}}/view/custom_tinymce.css",
+ //Character count
+ theme_advanced_path : false,
+ setup : function(ed) {
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ var editorId = ed.editorId;
+ var textarea = $('#'+editorId);
+ if (typeof(textarea.attr('tabindex')) != "undefined") {
+ $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex'));
+ textarea.attr('tabindex', null);
+ }
+ });
+ }
+ });
+}
+else
+ $("#prvmail-text").contact_autocomplete(baseurl+"/acl");
+
+
+</script>
+<script type="text/javascript" src="js/ajaxupload.js" ></script>
+<script>
+ $(document).ready(function() {
+ var uploader = new window.AjaxUpload(
+ 'prvmail-upload',
+ { action: 'wall_upload/{{$nickname}}',
+ name: 'userfile',
+ onSubmit: function(file,ext) { $('#profile-rotator').show(); },
+ onComplete: function(file,response) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,response);
+ $('#profile-rotator').hide();
+ }
+ }
+ );
+
+ });
+
+ function jotGetLink() {
+ reply = prompt("{{$linkurl}}");
+ if(reply && reply.length) {
+ $('#profile-rotator').show();
+ $.get('parse_url?url=' + reply, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#profile-rotator').hide();
+ });
+ }
+ }
+
+ function linkdropper(event) {
+ var linkFound = event.dataTransfer.types.contains("text/uri-list");
+ if(linkFound)
+ event.preventDefault();
+ }
+
+ function linkdrop(event) {
+ var reply = event.dataTransfer.getData("text/uri-list");
+ event.target.textContent = reply;
+ event.preventDefault();
+ if(reply && reply.length) {
+ $('#profile-rotator').show();
+ $.get('parse_url?url=' + reply, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#profile-rotator').hide();
+ });
+ }
+ }
+
+</script>
+
diff --git a/view/tpl/smarty3/nav.tpl b/view/tpl/smarty3/nav.tpl
new file mode 100644
index 000000000..649ec67f6
--- /dev/null
+++ b/view/tpl/smarty3/nav.tpl
@@ -0,0 +1,109 @@
+<header>
+ <div id="site-location">{{$sitelocation}}</div>
+ <div id="banner">{{$banner}}</div>
+</header>
+<nav>
+ <ul>
+ {{if $nav.lock}}
+ <li id="nav-rmagic-link" class="nav-menu-icon" >
+ <a class="icon {{$nav.lock.2}}" href="{{$nav.lock.0}}" title="{{$nav.lock.3}}" >{{$nav.lock.1}}</a>
+ </li>
+ {{/if}}
+
+ {{if $userinfo}}
+ <li id="nav-user-linkmenu" class="nav-menu-icon"><a href="#" rel="#nav-user-menu" title="{{$userinfo.name}}"><img src="{{$userinfo.icon}}" alt="{{$userinfo.name}}"></a>
+ {{if $localuser}}
+ <ul id="nav-user-menu" class="menu-popup">
+ {{foreach $nav.usermenu as $usermenu}}
+ <li><a class="{{$usermenu.2}}" href="{{$usermenu.0}}" title="{{$usermenu.3}}">{{$usermenu.1}}</a></li>
+ {{/foreach}}
+
+ {{if $nav.notifications}}<li><a class="{{$nav.notifications.2}}" href="{{$nav.notifications.0}}" title="{{$nav.notifications.3}}" >{{$nav.notifications.1}}</a></li>{{/if}}
+ {{if $nav.messages}}<li><a class="{{$nav.messages.2}}" href="{{$nav.messages.0}}" title="{{$nav.messages.3}}" >{{$nav.messages.1}}</a></li>{{/if}}
+ {{if $nav.contacts}}<li><a class="{{$nav.contacts.2}}" href="{{$nav.contacts.0}}" title="{{$nav.contacts.3}}" >{{$nav.contacts.1}}</a></li>{{/if}}
+ </ul>
+ {{/if}}
+ </li>
+ {{/if}}
+
+ {{if $nav.community}}
+ <li id="nav-community-link" class="nav-menu {{$sel.community}}">
+ <a class="{{$nav.community.2}}" href="{{$nav.community.0}}" title="{{$nav.community.3}}" >{{$nav.community.1}}</a>
+ </li>
+ {{/if}}
+
+ {{if $nav.network}}
+ <li id="nav-network-link" class="nav-menu {{$sel.network}}">
+ <a class="{{$nav.network.2}}" href="{{$nav.network.0}}" title="{{$nav.network.3}}" >{{$nav.network.1}}</a>
+ <span id="net-update" class="nav-notify"></span>
+ </li>
+ {{/if}}
+ {{if $nav.home}}
+ <li id="nav-home-link" class="nav-menu {{$sel.home}}">
+ <a class="{{$nav.home.2}}" href="{{$nav.home.0}}" title="{{$nav.home.3}}" >{{$nav.home.1}}</a>
+ <span id="home-update" class="nav-notify"></span>
+ </li>
+ {{/if}}
+
+
+ {{if $nav.notifications}}
+
+ <li id="nav-notifications-linkmenu" class="nav-menu fakelink" onclick="notify_popup(); return false;" title="{{$nav.notifications.1}}"><span class="icon s22 notify">{{$nav.notifications.1}}</span></a>
+ <span id="notify-update" class="nav-notify"></span>
+ <ul id="nav-notifications-menu" class="menu-popup">
+ <li id="nav-notifications-see-all"><a href="{{$nav.notifications.all.0}}">{{$nav.notifications.all.1}}</a></li>
+ <li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">{{$nav.notifications.mark.1}}</a></li>
+ <li class="empty">{{$emptynotifications}}</li>
+ </ul>
+ </li>
+ {{/if}}
+
+ <li id="nav-site-linkmenu" class="nav-menu-icon"><a href="#" rel="#nav-site-menu"><span class="icon s22 gear">Site</span></a>
+ <ul id="nav-site-menu" class="menu-popup">
+ {{if $nav.settings}}<li><a class="{{$nav.settings.2}}" href="{{$nav.settings.0}}" title="{{$nav.settings.3}}">{{$nav.settings.1}}</a></li>{{/if}}
+ {{if $nav.manage}}<li><a class="{{$nav.manage.2}}" href="{{$nav.manage.0}}" title="{{$nav.manage.3}}">{{$nav.manage.1}}</a></li>{{/if}}
+ {{if $nav.profiles}}<li><a class="{{$nav.profiles.2}}" href="{{$nav.profiles.0}}" title="{{$nav.profiles.3}}">{{$nav.profiles.1}}</a></li>{{/if}}
+
+ {{if $nav.admin}}<li><a class="{{$nav.admin.2}}" href="{{$nav.admin.0}}" title="{{$nav.admin.3}}" >{{$nav.admin.1}}</a></li>{{/if}}
+
+ {{if $nav.logout}}<li><a class="menu-sep {{$nav.logout.2}}" href="{{$nav.logout.0}}" title="{{$nav.logout.3}}" >{{$nav.logout.1}}</a></li>{{/if}}
+ {{if $nav.login}}<li><a class="{{$nav.login.2}}" href="{{$nav.login.0}}" title="{{$nav.login.3}}" >{{$nav.login.1}}</a><li>{{/if}}
+ </ul>
+ </li>
+
+ {{if $nav.help}}
+ <li id="nav-help-link" class="nav-menu {{$sel.help}}">
+ <a class="{{$nav.help.2}}" target="friendika-help" href="{{$nav.help.0}}" title="{{$nav.help.3}}" >{{$nav.help.1}}</a>
+ </li>
+ {{/if}}
+
+ {{if $nav.apps}}
+ <li id="nav-apps-link" class="nav-menu {{$sel.apps}}">
+ <a class=" {{$nav.apps.2}}" href="#" rel="#nav-apps-menu" title="{{$nav.apps.3}}" >{{$nav.apps.1}}</a>
+ <ul id="nav-apps-menu" class="menu-popup">
+ {{foreach $apps as $ap}}
+ <li>{{$ap}}</li>
+ {{/foreach}}
+ </ul>
+ </li>
+ {{/if}}
+
+ <li id="nav-searchbar">
+ <form method="get" action="search">
+ <input id="nav-search-text" type="text" value="" placeholder="{{$nav.search.1}}" name="search" title="{{$nav.search.3}}" onclick="this.submit();" />
+ </form>
+ </li>
+
+
+
+
+ </ul>
+
+
+</nav>
+<ul id="nav-notifications-template" style="display:none;" rel="template">
+ <li><a href="{0}"><img src="{1}">{2} <span class="notif-when">{3}</span></a></li>
+</ul>
+
+<div style="position: fixed; top: 3px; left: 5px; z-index:9999">{{$langselector}}</div>
+<div id="panel" style="display: none;"></div>
diff --git a/view/tpl/smarty3/netfriend.tpl b/view/tpl/smarty3/netfriend.tpl
new file mode 100644
index 000000000..ec6b3b6cc
--- /dev/null
+++ b/view/tpl/smarty3/netfriend.tpl
@@ -0,0 +1,14 @@
+<div class="intro-approve-as-friend-desc">{{$approve_as}}</div>
+
+<div class="intro-approve-as-friend-wrapper">
+ <label class="intro-approve-as-friend-label" for="intro-approve-as-friend-{{$intro_id}}">{{$as_friend}}</label>
+ <input type="radio" name="duplex" id="intro-approve-as-friend-{{$intro_id}}" class="intro-approve-as-friend" {{$friend_selected}} value="1" />
+ <div class="intro-approve-friend-break" ></div>
+</div>
+<div class="intro-approve-as-friend-end"></div>
+<div class="intro-approve-as-fan-wrapper">
+ <label class="intro-approve-as-fan-label" for="intro-approve-as-fan-{{$intro_id}}">{{$as_fan}}</label>
+ <input type="radio" name="duplex" id="intro-approve-as-fan-{{$intro_id}}" class="intro-approve-as-fan" {{$fan_selected}} value="0" />
+ <div class="intro-approve-fan-break"></div>
+</div>
+<div class="intro-approve-as-end"></div>
diff --git a/view/tpl/smarty3/nets.tpl b/view/tpl/smarty3/nets.tpl
new file mode 100644
index 000000000..f514626ac
--- /dev/null
+++ b/view/tpl/smarty3/nets.tpl
@@ -0,0 +1,10 @@
+<div id="nets-sidebar" class="widget">
+ <h3>{{$title}}</h3>
+ <div id="nets-desc">{{$desc}}</div>
+ <a href="{{$base}}?nets=all" class="nets-link{{if $sel_all}} nets-selected{{/if}} nets-all">{{$all}}</a>
+ <ul class="nets-ul">
+ {{foreach $nets as $net}}
+ <li><a href="{{$base}}?nets={{$net.ref}}" class="nets-link{{if $net.selected}} nets-selected{{/if}}">{{$net.name}}</a></li>
+ {{/foreach}}
+ </ul>
+</div>
diff --git a/view/tpl/smarty3/new_channel.tpl b/view/tpl/smarty3/new_channel.tpl
new file mode 100644
index 000000000..79e2ac85e
--- /dev/null
+++ b/view/tpl/smarty3/new_channel.tpl
@@ -0,0 +1,29 @@
+<h2>{{$title}}</h2>
+
+<form action="new_channel" method="post" id="newchannel-form">
+
+ <div id="newchannel-desc" class="descriptive-paragraph">{{$desc}}</div>
+
+ <label for="newchannel-name" id="label-newchannel-name" class="newchannel-label" >{{$label_name}}</label>
+ <input type="text" name="name" id="newchannel-name" class="newchannel-input" value="{{$name}}" />
+ <div id="newchannel-name-feedback" class="newchannel-feedback"></div>
+ <div id="newchannel-name-end" class="newchannel-field-end"></div>
+
+ <div id="newchannel-name-help" class="descriptive-paragraph">{{$help_name}}</div>
+
+ <label for="newchannel-nickname" id="label-newchannel-nickname" class="newchannel-label" >{{$label_nick}}</label>
+ <input type="text" name="nickname" id="newchannel-nickname" class="newchannel-input" value="{{$nickname}}" />
+ <div id="newchannel-nickname-feedback" class="newchannel-feedback"></div>
+ <div id="newchannel-nickname-end" class="newchannel-field-end"></div>
+
+ <div id="newchannel-nick-desc" class="descriptive-paragraph">{{$nick_desc}}</div>
+
+
+ <input type="checkbox" name="import" id="newchannel-import" value="1" />
+ <label for="newchannel-import" id="label-newchannel-import">{{$label_import}}</label>
+ <div id="newchannel-import-end" class="newchannel-field-end"></div>
+
+ <input type="submit" name="submit" id="newchannel-submit-button" value="{{$submit}}" />
+ <div id="newchannel-submit-end" class="newchannel-field-end"></div>
+
+</form>
diff --git a/view/tpl/smarty3/nogroup-template.tpl b/view/tpl/smarty3/nogroup-template.tpl
new file mode 100644
index 000000000..15094b2d6
--- /dev/null
+++ b/view/tpl/smarty3/nogroup-template.tpl
@@ -0,0 +1,12 @@
+<h1>{{$header}}</h1>
+
+{{foreach $contacts as $contact}}
+ {{include file="contact_template.tpl"}}
+{{/foreach}}
+<div id="contact-edit-end"></div>
+
+{{$paginate}}
+
+
+
+
diff --git a/view/tpl/smarty3/notifications.tpl b/view/tpl/smarty3/notifications.tpl
new file mode 100644
index 000000000..0289c41d4
--- /dev/null
+++ b/view/tpl/smarty3/notifications.tpl
@@ -0,0 +1,8 @@
+
+<h1>{{$notif_header}}</h1>
+
+{{include file="common_tabs.tpl"}}
+
+<div class="notif-network-wrapper">
+ {{$notif_content}}
+</div>
diff --git a/view/tpl/smarty3/notifications_comments_item.tpl b/view/tpl/smarty3/notifications_comments_item.tpl
new file mode 100644
index 000000000..9c454a3ed
--- /dev/null
+++ b/view/tpl/smarty3/notifications_comments_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/notifications_dislikes_item.tpl b/view/tpl/smarty3/notifications_dislikes_item.tpl
new file mode 100644
index 000000000..9c454a3ed
--- /dev/null
+++ b/view/tpl/smarty3/notifications_dislikes_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/notifications_friends_item.tpl b/view/tpl/smarty3/notifications_friends_item.tpl
new file mode 100644
index 000000000..9c454a3ed
--- /dev/null
+++ b/view/tpl/smarty3/notifications_friends_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/notifications_likes_item.tpl b/view/tpl/smarty3/notifications_likes_item.tpl
new file mode 100644
index 000000000..ed020a245
--- /dev/null
+++ b/view/tpl/smarty3/notifications_likes_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notification"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/notifications_network_item.tpl b/view/tpl/smarty3/notifications_network_item.tpl
new file mode 100644
index 000000000..856955424
--- /dev/null
+++ b/view/tpl/smarty3/notifications_network_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div>
diff --git a/view/tpl/smarty3/notifications_posts_item.tpl b/view/tpl/smarty3/notifications_posts_item.tpl
new file mode 100644
index 000000000..9c454a3ed
--- /dev/null
+++ b/view/tpl/smarty3/notifications_posts_item.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/notify.tpl b/view/tpl/smarty3/notify.tpl
new file mode 100644
index 000000000..9c454a3ed
--- /dev/null
+++ b/view/tpl/smarty3/notify.tpl
@@ -0,0 +1,3 @@
+<div class="notif-item">
+ <a href="{{$item_link}}" target="friendica-notifications"><img src="{{$item_image}}" class="notif-image">{{$item_text}} <span class="notif-when">{{$item_when}}</span></a>
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/oauth_authorize.tpl b/view/tpl/smarty3/oauth_authorize.tpl
new file mode 100644
index 000000000..2b7afa80e
--- /dev/null
+++ b/view/tpl/smarty3/oauth_authorize.tpl
@@ -0,0 +1,10 @@
+<h1>{{$title}}</h1>
+
+<div class='oauthapp'>
+ <img src='{{$app.icon}}'>
+ <h4>{{$app.name}}</h4>
+</div>
+<h3>{{$authorize}}</h3>
+<form method="POST">
+<div class="settings-submit-wrapper"><input class="settings-submit" type="submit" name="oauth_yes" value="{{$yes}}" /></div>
+</form>
diff --git a/view/tpl/smarty3/oauth_authorize_done.tpl b/view/tpl/smarty3/oauth_authorize_done.tpl
new file mode 100644
index 000000000..2e91e0125
--- /dev/null
+++ b/view/tpl/smarty3/oauth_authorize_done.tpl
@@ -0,0 +1,4 @@
+<h1>{{$title}}</h1>
+
+<p>{{$info}}</p>
+<code>{{$code}}</code>
diff --git a/view/tpl/smarty3/oembed_video.tpl b/view/tpl/smarty3/oembed_video.tpl
new file mode 100644
index 000000000..4ad75a82e
--- /dev/null
+++ b/view/tpl/smarty3/oembed_video.tpl
@@ -0,0 +1,4 @@
+<a href='{{$embedurl}}' onclick='this.innerHTML=Base64.decode("{{$escapedhtml}}"); return false;' style='float:left; margin: 1em; position: relative;'>
+ <img width='{{$tw}}' height='{{$th}}' src='{{$turl}}' >
+ <div style='position: absolute; top: 0px; left: 0px; width: {{$twpx}}; height: {{$thpx}}; background: url({{$baseurl}}/images/icons/48/play.png) no-repeat center center;'></div>
+</a>
diff --git a/view/tpl/smarty3/oexchange_xrd.tpl b/view/tpl/smarty3/oexchange_xrd.tpl
new file mode 100644
index 000000000..74ef22874
--- /dev/null
+++ b/view/tpl/smarty3/oexchange_xrd.tpl
@@ -0,0 +1,33 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
+
+ <Subject>{{$base}}</Subject>
+
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/vendor">Friendika</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/title">Friendika Social Network</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/name">Friendika</Property>
+ <Property
+ type="http://www.oexchange.org/spec/0.8/prop/prompt">Send to Friendika</Property>
+
+ <Link
+ rel="icon"
+ href="{{$base}}/images/friendika-16.png"
+ type="image/png"
+ />
+
+ <Link
+ rel="icon32"
+ href="{{$base}}/images/friendika-32.png"
+ type="image/png"
+ />
+
+ <Link
+ rel= "http://www.oexchange.org/spec/0.8/rel/offer"
+ href="{{$base}}/oexchange"
+ type="text/html"
+ />
+</XRD>
+
diff --git a/view/tpl/smarty3/opensearch.tpl b/view/tpl/smarty3/opensearch.tpl
new file mode 100644
index 000000000..1b57a9d04
--- /dev/null
+++ b/view/tpl/smarty3/opensearch.tpl
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
+ <ShortName>Friendika@{{$nodename}}</ShortName>
+ <Description>Search in Friendika@{{$nodename}}</Description>
+ <Contact>http://bugs.friendika.com/</Contact>
+ <Image height="16" width="16" type="image/png">{{$baseurl}}/images/friendika-16.png</Image>
+ <Image height="64" width="64" type="image/png">{{$baseurl}}/images/friendika-64.png</Image>
+ <Url type="text/html"
+ template="{{$baseurl}}/search?search={searchTerms}"/>
+ <Url type="application/opensearchdescription+xml"
+ rel="self"
+ template="{{$baseurl}}/opensearch" />
+</OpenSearchDescription> \ No newline at end of file
diff --git a/view/tpl/smarty3/pagetypes.tpl b/view/tpl/smarty3/pagetypes.tpl
new file mode 100644
index 000000000..d5fcd9968
--- /dev/null
+++ b/view/tpl/smarty3/pagetypes.tpl
@@ -0,0 +1,5 @@
+ {{include file="field_radio.tpl" field=$page_normal}}
+ {{include file="field_radio.tpl" field=$page_community}}
+ {{include file="field_radio.tpl" field=$page_prvgroup}}
+ {{include file="field_radio.tpl" field=$page_soapbox}}
+ {{include file="field_radio.tpl" field=$page_freelove}}
diff --git a/view/tpl/smarty3/peoplefind.tpl b/view/tpl/smarty3/peoplefind.tpl
new file mode 100644
index 000000000..1492db120
--- /dev/null
+++ b/view/tpl/smarty3/peoplefind.tpl
@@ -0,0 +1,14 @@
+<div id="peoplefind-sidebar" class="widget">
+ <h3>{{$findpeople}}</h3>
+ <div id="peoplefind-desc">{{$desc}}</div>
+ <form action="dirfind" method="post" />
+ <input id="side-peoplefind-url" type="text" name="search" size="24" title="{{$hint}}" /><input id="side-peoplefind-submit" type="submit" name="submit" value="{{$findthem}}" />
+ </form>
+ <div class="side-link" id="side-match-link"><a href="match" >{{$similar}}</a></div>
+ <div class="side-link" id="side-suggest-link"><a href="suggest" >{{$suggest}}</a></div>
+ <div class="side-link" id="side-random-profile-link" ><a href="randprof" target="extlink" >{{$random}}</a></div>
+ {{if $inv}}
+ <div class="side-link" id="side-invite-link" ><a href="invite" >{{$inv}}</a></div>
+ {{/if}}
+</div>
+
diff --git a/view/tpl/smarty3/photo_album.tpl b/view/tpl/smarty3/photo_album.tpl
new file mode 100644
index 000000000..3308bf500
--- /dev/null
+++ b/view/tpl/smarty3/photo_album.tpl
@@ -0,0 +1,7 @@
+<div class="photo-album-image-wrapper" id="photo-album-image-wrapper-{{$id}}">
+ <a href="{{$photolink}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$id}}" title="{{$phototitle}}">
+ <img src="{{$imgsrc}}" alt="{{$imgalt}}" title="{{$phototitle}}" class="photo-album-photo lframe resize{{$twist}}" id="photo-album-photo-{{$id}}" />
+ <p class='caption'>{{$desc}}</p>
+ </a>
+</div>
+<div class="photo-album-image-wrapper-end"></div>
diff --git a/view/tpl/smarty3/photo_drop.tpl b/view/tpl/smarty3/photo_drop.tpl
new file mode 100644
index 000000000..94ef5a3ee
--- /dev/null
+++ b/view/tpl/smarty3/photo_drop.tpl
@@ -0,0 +1,4 @@
+<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$id}}" >
+ <a href="item/drop/{{$id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+</div>
+<div class="wall-item-delete-end"></div>
diff --git a/view/tpl/smarty3/photo_edit.tpl b/view/tpl/smarty3/photo_edit.tpl
new file mode 100644
index 000000000..4c7eed833
--- /dev/null
+++ b/view/tpl/smarty3/photo_edit.tpl
@@ -0,0 +1,50 @@
+
+<form action="photos/{{$nickname}}/{{$resource_id}}" method="post" id="photo_edit_form" >
+
+ <input type="hidden" name="item_id" value="{{$item_id}}" />
+
+ <label id="photo-edit-albumname-label" for="photo-edit-albumname">{{$newalbum}}</label>
+ <input id="photo-edit-albumname" type="text" size="32" name="albname" value="{{$album}}" />
+
+ <div id="photo-edit-albumname-end"></div>
+
+ <label id="photo-edit-caption-label" for="photo-edit-caption">{{$capt_label}}</label>
+ <input id="photo-edit-caption" type="text" size="84" name="desc" value="{{$caption}}" />
+
+ <div id="photo-edit-caption-end"></div>
+
+ <label id="photo-edit-tags-label" for="photo-edit-newtag" >{{$tag_label}}</label>
+ <input name="newtag" id="photo-edit-newtag" size="84" title="{{$help_tags}}" type="text" />
+
+ <div id="photo-edit-tags-end"></div>
+ <div id="photo-edit-rotate-wrapper">
+ <div id="photo-edit-rotate-label">
+ {{$rotatecw}}<br>
+ {{$rotateccw}}
+ </div>
+ <input type="radio" name="rotate" value="1" /><br>
+ <input type="radio" name="rotate" value="2" />
+ </div>
+ <div id="photo-edit-rotate-end"></div>
+
+ <div id="photo-edit-perms" class="photo-edit-perms" >
+ <a href="#photo-edit-perms-select" id="photo-edit-perms-menu" class="button popupbox" title="{{$permissions}}"/>
+ <span id="jot-perms-icon" class="icon {{$lockstate}}" ></span>{{$permissions}}
+ </a>
+ <div id="photo-edit-perms-menu-end"></div>
+
+ <div style="display: none;">
+ <div id="photo-edit-perms-select" >
+ {{$aclselect}}
+ </div>
+ </div>
+ </div>
+ <div id="photo-edit-perms-end"></div>
+
+ <input id="photo-edit-submit-button" type="submit" name="submit" value="{{$submit}}" />
+ <input id="photo-edit-delete-button" type="submit" name="delete" value="{{$delete}}" onclick="return confirmDelete()"; />
+
+ <div id="photo-edit-end"></div>
+</form>
+
+
diff --git a/view/tpl/smarty3/photo_item.tpl b/view/tpl/smarty3/photo_item.tpl
new file mode 100644
index 000000000..e7d25fd55
--- /dev/null
+++ b/view/tpl/smarty3/photo_item.tpl
@@ -0,0 +1,22 @@
+<div class="wall-item-outside-wrapper{{$indent}}" id="wall-item-outside-wrapper-{{$id}}" >
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-{{$id}}" >
+ <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-photo-link" id="wall-item-photo-link-{{$id}}">
+ <img src="{{$thumb}}" class="wall-item-photo" id="wall-item-photo-{{$id}}" style="height: 80px; width: 80px;" alt="{{$name}}" /></a>
+ </div>
+
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$id}}" >
+ <a href="{{$profile_url}}" title="View {{$name}}'s profile" class="wall-item-name-link"><span class="wall-item-name" id="wall-item-name-{{$id}}" >{{$name}}</span></a>
+ <div class="wall-item-ago" id="wall-item-ago-{{$id}}">{{$ago}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$id}}">{{$title}}</div>
+ <div class="wall-item-body" id="wall-item-body-{{$id}}" >{{$body}}</div>
+ </div>
+ {{$drop}}
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-comment-separator"></div>
+ {{$comment}}
+
+<div class="wall-item-outside-wrapper-end{{$indent}}" ></div>
+</div>
+
diff --git a/view/tpl/smarty3/photo_top.tpl b/view/tpl/smarty3/photo_top.tpl
new file mode 100644
index 000000000..826266aff
--- /dev/null
+++ b/view/tpl/smarty3/photo_top.tpl
@@ -0,0 +1,8 @@
+
+<div class="photo-top-image-wrapper lframe" id="photo-top-image-wrapper-{{$photo.id}}">
+ <a href="{{$photo.link}}" class="photo-top-photo-link" id="photo-top-photo-link-{{$photo.id}}" title="{{$photo.title}}">
+ <img src="{{$photo.src}}" alt="{{$photo.alt}}" title="{{$photo.title}}" class="photo-top-photo{{$photo.twist}}" id="photo-top-photo-{{$photo.id}}" />
+ </a>
+ <div class="photo-top-album-name"><a href="{{$photo.album.link}}" class="photo-top-album-link" title="{{$photo.album.alt}}" >{{$photo.album.name}}</a></div>
+</div>
+
diff --git a/view/tpl/smarty3/photo_view.tpl b/view/tpl/smarty3/photo_view.tpl
new file mode 100644
index 000000000..543130113
--- /dev/null
+++ b/view/tpl/smarty3/photo_view.tpl
@@ -0,0 +1,37 @@
+<div id="live-display"></div>
+<h3><a href="{{$album.0}}">{{$album.1}}</a></h3>
+
+<div id="photo-edit-link-wrap">
+{{if $tools}}
+<a id="photo-edit-link" href="{{$tools.edit.0}}">{{$tools.edit.1}}</a>
+|
+<a id="photo-toprofile-link" href="{{$tools.profile.0}}">{{$tools.profile.1}}</a>
+{{/if}}
+{{if $lock}} | <img src="images/lock_icon.gif" class="lockview" alt="{{$lock}}" onclick="lockview(event,'photo/{{$id}}');" /> {{/if}}
+</div>
+
+{{if $prevlink}}<div id="photo-prev-link"><a href="{{$prevlink.0}}">{{$prevlink.1}}</a></div>{{/if}}
+<div id="photo-photo"><a href="{{$photo.href}}" title="{{$photo.title}}"><img src="{{$photo.src}}" /></a></div>
+{{if $nextlink}}<div id="photo-next-link"><a href="{{$nextlink.0}}">{{$nextlink.1}}</a></div>{{/if}}
+<div id="photo-photo-end"></div>
+<div id="photo-caption">{{$desc}}</div>
+{{if $tags}}
+<div id="in-this-photo-text">{{$tags.0}}</div>
+<div id="in-this-photo">{{$tags.1}}</div>
+{{/if}}
+{{if $tags.2}}<div id="tag-remove"><a href="{{$tags.2}}">{{$tags.3}}</a></div>{{/if}}
+
+{{if $edit}}{{$edit}}{{/if}}
+
+{{if $likebuttons}}
+<div id="photo-like-div">
+ {{$likebuttons}}
+ {{$like}}
+ {{$dislike}}
+</div>
+{{/if}}
+
+{{$comments}}
+
+{{$paginate}}
+
diff --git a/view/tpl/smarty3/photos_recent.tpl b/view/tpl/smarty3/photos_recent.tpl
new file mode 100644
index 000000000..43a22a017
--- /dev/null
+++ b/view/tpl/smarty3/photos_recent.tpl
@@ -0,0 +1,11 @@
+<h3>{{$title}}</h3>
+{{if $can_post}}
+<a id="photo-top-upload-link" href="{{$upload.1}}">{{$upload.0}}</a>
+{{/if}}
+
+<div class="photos">
+{{foreach $photos as $photo}}
+ {{include file="photo_top.tpl"}}
+{{/foreach}}
+</div>
+<div class="photos-end"></div>
diff --git a/view/tpl/smarty3/photos_upload.tpl b/view/tpl/smarty3/photos_upload.tpl
new file mode 100644
index 000000000..a0b2368ec
--- /dev/null
+++ b/view/tpl/smarty3/photos_upload.tpl
@@ -0,0 +1,46 @@
+<h3>{{$pagename}}</h3>
+
+<div id="photos-usage-message">{{$usage}}</div>
+
+<form action="photos/{{$nickname}}" enctype="multipart/form-data" method="post" name="photos-upload-form" id="photos-upload-form" >
+ <div id="photos-upload-new-wrapper" >
+ <div id="photos-upload-newalbum-div">
+ <label id="photos-upload-newalbum-text" for="photos-upload-newalbum" >{{$newalbum}}</label>
+ </div>
+ <input id="photos-upload-newalbum" type="text" name="newalbum" />
+ </div>
+ <div id="photos-upload-new-end"></div>
+ <div id="photos-upload-exist-wrapper">
+ <div id="photos-upload-existing-album-text">{{$existalbumtext}}</div>
+ {{$albumselect}}
+ </div>
+ <div id="photos-upload-exist-end"></div>
+
+ <div id="photos-upload-noshare-div" class="photos-upload-noshare-div" >
+ <input id="photos-upload-noshare" type="checkbox" name="not_visible" value="1" />
+ <label id="photos-upload-noshare-text" for="photos-upload-noshare" >{{$nosharetext}}</label>
+ </div>
+
+
+ <div id="photos-upload-perms" class="photos-upload-perms" >
+ <a href="#photos-upload-permissions-wrapper" id="photos-upload-perms-menu" class="button popupbox" />
+ <span id="jot-perms-icon" class="icon {{$lockstate}}" ></span>{{$permissions}}
+ </a>
+ </div>
+ <div id="photos-upload-perms-end"></div>
+
+ <div style="display: none;">
+ <div id="photos-upload-permissions-wrapper">
+ {{$aclselect}}
+ </div>
+ </div>
+
+ <div id="photos-upload-spacer"></div>
+
+ {{$uploader}}
+
+ {{$default}}
+
+ <div class="photos-upload-end" ></div>
+</form>
+
diff --git a/view/tpl/smarty3/poco_entry_xml.tpl b/view/tpl/smarty3/poco_entry_xml.tpl
new file mode 100644
index 000000000..869894852
--- /dev/null
+++ b/view/tpl/smarty3/poco_entry_xml.tpl
@@ -0,0 +1,7 @@
+<entry>
+{{if $entry.id}}<id>{{$entry.id}}</id>{{/if}}
+{{if $entry.displayName}}<displayName>{{$entry.displayName}}</displayName>{{/if}}
+{{if $entry.preferredUsername}}<preferredUsername>{{$entry.preferredUsername}}</preferredUsername>{{/if}}
+{{if $entry.urls}}{{foreach $entry.urls as $url}}<urls><value>{{$url.value}}</value><type>{{$url.type}}</type></urls>{{/foreach}}{{/if}}
+{{if $entry.photos}}{{foreach $entry.photos as $photo}}<photos><value>{{$photo.value}}</value><type>{{$photo.type}}</type></photos>{{/foreach}}{{/if}}
+</entry>
diff --git a/view/tpl/smarty3/poco_xml.tpl b/view/tpl/smarty3/poco_xml.tpl
new file mode 100644
index 000000000..0e38a692c
--- /dev/null
+++ b/view/tpl/smarty3/poco_xml.tpl
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<response>
+{{if $response.sorted}}<sorted>{{$response.sorted}}</sorted>{{/if}}
+{{if $response.filtered}}<filtered>{{$response.filtered}}</filtered>{{/if}}
+{{if $response.updatedSince}}<updatedSince>{{$response.updatedSince}}</updatedSince>{{/if}}
+<startIndex>{{$response.startIndex}}</startIndex>
+<itemsPerPage>{{$response.itemsPerPage}}</itemsPerPage>
+<totalResults>{{$response.totalResults}}</totalResults>
+
+
+{{if $response.totalResults}}
+{{foreach $response.entry as $entry}}
+{{include file="poco_entry_xml.tpl"}}
+{{/foreach}}
+{{else}}
+<entry></entry>
+{{/if}}
+</response>
diff --git a/view/tpl/smarty3/poke_content.tpl b/view/tpl/smarty3/poke_content.tpl
new file mode 100644
index 000000000..22a0b291f
--- /dev/null
+++ b/view/tpl/smarty3/poke_content.tpl
@@ -0,0 +1,32 @@
+<h3>{{$title}}</h3>
+
+<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}}" 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}}" />
+</form>
+
diff --git a/view/tpl/smarty3/posted_date_widget.tpl b/view/tpl/smarty3/posted_date_widget.tpl
new file mode 100644
index 000000000..009fa60a6
--- /dev/null
+++ b/view/tpl/smarty3/posted_date_widget.tpl
@@ -0,0 +1,9 @@
+<div id="datebrowse-sidebar" class="widget">
+ <h3>{{$title}}</h3>
+<script>function dateSubmit(dateurl) { window.location.href = dateurl; } </script>
+<select id="posted-date-selector" name="posted-date-select" onchange="dateSubmit($(this).val());" size="{{$size}}">
+{{foreach $dates as $d}}
+<option value="{{$url}}/{{$d.1}}/{{$d.2}}" >{{$d.0}}</option>
+{{/foreach}}
+</select>
+</div>
diff --git a/view/tpl/smarty3/profed_head.tpl b/view/tpl/smarty3/profed_head.tpl
new file mode 100644
index 000000000..103960a76
--- /dev/null
+++ b/view/tpl/smarty3/profed_head.tpl
@@ -0,0 +1,36 @@
+<script language="javascript" type="text/javascript"
+ src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+ <script language="javascript" type="text/javascript">
+
+
+tinyMCE.init({
+ theme : "advanced",
+ mode : "{{$editselect}}",
+ plugins : "bbcode,paste",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ content_css: "{{$baseurl}}/view/custom_tinymce.css",
+ theme_advanced_path : false,
+ setup : function(ed) {
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ });
+ }
+
+});
+
+
+</script>
+
diff --git a/view/tpl/smarty3/profile-hide-friends.tpl b/view/tpl/smarty3/profile-hide-friends.tpl
new file mode 100644
index 000000000..590730a7c
--- /dev/null
+++ b/view/tpl/smarty3/profile-hide-friends.tpl
@@ -0,0 +1,16 @@
+<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>
diff --git a/view/tpl/smarty3/profile-hide-wall.tpl b/view/tpl/smarty3/profile-hide-wall.tpl
new file mode 100644
index 000000000..6a118982e
--- /dev/null
+++ b/view/tpl/smarty3/profile-hide-wall.tpl
@@ -0,0 +1,16 @@
+<p id="hide-wall-text">
+{{$desc}}
+</p>
+
+ <div id="hide-wall-yes-wrapper">
+ <label id="hide-wall-yes-label" for="hide-wall-yes">{{$yes_str}}</label>
+ <input type="radio" name="hidewall" id="hide-wall-yes" {{$yes_selected}} value="1" />
+
+ <div id="hide-wall-break" ></div>
+ </div>
+ <div id="hide-wall-no-wrapper">
+ <label id="hide-wall-no-label" for="hide-wall-no">{{$no_str}}</label>
+ <input type="radio" name="hidewall" id="hide-wall-no" {{$no_selected}} value="0" />
+
+ <div id="hide-wall-end"></div>
+ </div>
diff --git a/view/tpl/smarty3/profile-in-directory.tpl b/view/tpl/smarty3/profile-in-directory.tpl
new file mode 100644
index 000000000..b36739514
--- /dev/null
+++ b/view/tpl/smarty3/profile-in-directory.tpl
@@ -0,0 +1,16 @@
+<p id="profile-in-directory">
+{{$desc}}
+</p>
+
+ <div id="profile-in-dir-yes-wrapper">
+ <label id="profile-in-dir-yes-label" for="profile-in-dir-yes">{{$yes_str}}</label>
+ <input type="radio" name="profile_in_directory" id="profile-in-dir-yes" {{$yes_selected}} value="1" />
+
+ <div id="profile-in-dir-break" ></div>
+ </div>
+ <div id="profile-in-dir-no-wrapper">
+ <label id="profile-in-dir-no-label" for="profile-in-dir-no">{{$no_str}}</label>
+ <input type="radio" name="profile_in_directory" id="profile-in-dir-no" {{$no_selected}} value="0" />
+
+ <div id="profile-in-dir-end"></div>
+ </div>
diff --git a/view/tpl/smarty3/profile-in-netdir.tpl b/view/tpl/smarty3/profile-in-netdir.tpl
new file mode 100644
index 000000000..23d4642ac
--- /dev/null
+++ b/view/tpl/smarty3/profile-in-netdir.tpl
@@ -0,0 +1,16 @@
+<p id="profile-in-directory">
+{{$desc}}
+</p>
+
+ <div id="profile-in-netdir-yes-wrapper">
+ <label id="profile-in-netdir-yes-label" for="profile-in-netdir-yes">{{$yes_str}}</label>
+ <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-yes" {{$yes_selected}} value="1" />
+
+ <div id="profile-in-netdir-break" ></div>
+ </div>
+ <div id="profile-in-netdir-no-wrapper">
+ <label id="profile-in-netdir-no-label" for="profile-in-netdir-no">{{$no_str}}</label>
+ <input type="radio" name="profile_in_netdirectory" id="profile-in-netdir-no" {{$no_selected}} value="0" />
+
+ <div id="profile-in-netdir-end"></div>
+ </div>
diff --git a/view/tpl/smarty3/profile_advanced.tpl b/view/tpl/smarty3/profile_advanced.tpl
new file mode 100644
index 000000000..812132f0c
--- /dev/null
+++ b/view/tpl/smarty3/profile_advanced.tpl
@@ -0,0 +1,170 @@
+<h2>{{$title}}</h2>
+
+<dl id="aprofile-fullname" class="aprofile">
+ <dt>{{$profile.fullname.0}}</dt>
+ <dd>{{$profile.fullname.1}}</dd>
+</dl>
+
+{{if $profile.gender}}
+<dl id="aprofile-gender" class="aprofile">
+ <dt>{{$profile.gender.0}}</dt>
+ <dd>{{$profile.gender.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.birthday}}
+<dl id="aprofile-birthday" class="aprofile">
+ <dt>{{$profile.birthday.0}}</dt>
+ <dd>{{$profile.birthday.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.age}}
+<dl id="aprofile-age" class="aprofile">
+ <dt>{{$profile.age.0}}</dt>
+ <dd>{{$profile.age.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.marital}}
+<dl id="aprofile-marital" class="aprofile">
+ <dt><span class="heart">&hearts;</span> {{$profile.marital.0}}</dt>
+ <dd>{{$profile.marital.1}}{{if $profile.marital.with}} ({{$profile.marital.with}}){{/if}}{{if $profile.howlong}} {{$profile.howlong}}{{/if}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.sexual}}
+<dl id="aprofile-sexual" class="aprofile">
+ <dt>{{$profile.sexual.0}}</dt>
+ <dd>{{$profile.sexual.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.pub_keywords}}
+<dl id="aprofile-tags" class="aprofile">
+ <dt>{{$profile.pub_keywords.0}}</dt>
+ <dd>{{$profile.pub_keywords.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.homepage}}
+<dl id="aprofile-homepage" class="aprofile">
+ <dt>{{$profile.homepage.0}}</dt>
+ <dd>{{$profile.homepage.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.hometown}}
+<dl id="aprofile-hometown" class="aprofile">
+ <dt>{{$profile.hometown.0}}</dt>
+ <dd>{{$profile.hometown.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.politic}}
+<dl id="aprofile-politic" class="aprofile">
+ <dt>{{$profile.politic.0}}</dt>
+ <dd>{{$profile.politic.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.religion}}
+<dl id="aprofile-religion" class="aprofile">
+ <dt>{{$profile.religion.0}}</dt>
+ <dd>{{$profile.religion.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.about}}
+<dl id="aprofile-about" class="aprofile">
+ <dt>{{$profile.about.0}}</dt>
+ <dd>{{$profile.about.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.interest}}
+<dl id="aprofile-interest" class="aprofile">
+ <dt>{{$profile.interest.0}}</dt>
+ <dd>{{$profile.interest.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.likes}}
+<dl id="aprofile-likes" class="aprofile">
+ <dt>{{$profile.likes.0}}</dt>
+ <dd>{{$profile.likes.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.dislikes}}
+<dl id="aprofile-dislikes" class="aprofile">
+ <dt>{{$profile.dislikes.0}}</dt>
+ <dd>{{$profile.dislikes.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.contact}}
+<dl id="aprofile-contact" class="aprofile">
+ <dt>{{$profile.contact.0}}</dt>
+ <dd>{{$profile.contact.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.music}}
+<dl id="aprofile-music" class="aprofile">
+ <dt>{{$profile.music.0}}</dt>
+ <dd>{{$profile.music.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.book}}
+<dl id="aprofile-book" class="aprofile">
+ <dt>{{$profile.book.0}}</dt>
+ <dd>{{$profile.book.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.tv}}
+<dl id="aprofile-tv" class="aprofile">
+ <dt>{{$profile.tv.0}}</dt>
+ <dd>{{$profile.tv.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.film}}
+<dl id="aprofile-film" class="aprofile">
+ <dt>{{$profile.film.0}}</dt>
+ <dd>{{$profile.film.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.romance}}
+<dl id="aprofile-romance" class="aprofile">
+ <dt>{{$profile.romance.0}}</dt>
+ <dd>{{$profile.romance.1}}</dd>
+</dl>
+{{/if}}
+
+
+{{if $profile.work}}
+<dl id="aprofile-work" class="aprofile">
+ <dt>{{$profile.work.0}}</dt>
+ <dd>{{$profile.work.1}}</dd>
+</dl>
+{{/if}}
+
+{{if $profile.education}}
+<dl id="aprofile-education" class="aprofile">
+ <dt>{{$profile.education.0}}</dt>
+ <dd>{{$profile.education.1}}</dd>
+</dl>
+{{/if}}
+
+
+
+
diff --git a/view/tpl/smarty3/profile_edit.tpl b/view/tpl/smarty3/profile_edit.tpl
new file mode 100644
index 000000000..d4647ad5f
--- /dev/null
+++ b/view/tpl/smarty3/profile_edit.tpl
@@ -0,0 +1,317 @@
+{{$default}}
+
+<h1>{{$banner}}</h1>
+
+<div id="profile-edit-links">
+<ul>
+<li><a href="profile/{{$profile_id}}/view?tab=profile" id="profile-edit-view-link" title="{{$viewprof}}">{{$viewprof}}</a></li>
+<li><a href="{{$profile_clone_link}}" id="profile-edit-clone-link" title="{{$cr_prof}}">{{$cl_prof}}</a></li>
+<li></li>
+<li><a href="{{$profile_drop_link}}" id="profile-edit-drop-link" title="{{$del_prof}}" {{$disabled}} >{{$del_prof}}</a></li>
+
+</ul>
+</div>
+
+<div id="profile-edit-links-end"></div>
+
+
+<div id="profile-edit-wrapper" >
+<form id="profile-edit-form" name="form1" action="profiles/{{$profile_id}}" method="post" >
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+<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}}" /><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}}" />
+</div>
+<div id="profile-edit-name-end"></div>
+
+<div id="profile-edit-pdesc-wrapper" >
+<label id="profile-edit-pdesc-label" for="profile-edit-pdesc" >{{$lbl_title}} </label>
+<input type="text" size="32" name="pdesc" id="profile-edit-pdesc" value="{{$pdesc}}" />
+</div>
+<div id="profile-edit-pdesc-end"></div>
+
+
+<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>
+
+{{$hide_friends}}
+
+<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>
+
+
+<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}}" />
+</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}}" />
+</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}}" />
+</div>
+<div id="profile-edit-postal-code-end"></div>
+
+
+<div id="profile-edit-region-wrapper" >
+<label id="profile-edit-region-label" for="profile-edit-region" >{{$lbl_region}} </label>
+<input type="text" size="32" name="region" id="profile-edit-region" value="{{$region}}" />
+</div>
+<div id="profile-edit-region-end"></div>
+
+<div id="profile-edit-country-name-wrapper" >
+<label id="profile-edit-country-name-label" for="profile-edit-country-name" >{{$lbl_country}} </label>
+<input type="text" size="32" name="country_name" id="profile-edit-country-name" value="{{$country_name}}" />
+</div>
+<div id="profile-edit-country-name-end"></div>
+
+<div id="profile-edit-hometown-wrapper" >
+<label id="profile-edit-hometown-label" for="profile-edit-hometown" >{{$lbl_hometown}} </label>
+<input type="text" size="32" name="hometown" id="profile-edit-hometown" value="{{$hometown}}" />
+</div>
+<div id="profile-edit-hometown-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>
+
+<div id="profile-edit-marital-wrapper" >
+<label id="profile-edit-marital-label" for="profile-edit-marital" >{{$lbl_marital}} </label>
+{{$marital}}
+</div>
+<label id="profile-edit-with-label" for="profile-edit-with" > {{$lbl_with}} </label>
+<input type="text" size="32" name="with" id="profile-edit-with" title="{{$lbl_ex1}}" value="{{$with}}" />
+<label id="profile-edit-howlong-label" for="profile-edit-howlong" > {{$lbl_howlong}} </label>
+<input type="text" size="32" name="howlong" id="profile-edit-howlong" title="{{$lbl_howlong}}" value="{{$howlong}}" />
+
+<div id="profile-edit-marital-end"></div>
+
+<div id="profile-edit-sexual-wrapper" >
+<label id="profile-edit-sexual-label" for="sexual-select" >{{$lbl_sexual}} </label>
+{{$sexual}}
+</div>
+<div id="profile-edit-sexual-end"></div>
+
+
+
+<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>
+
+<div id="profile-edit-politic-wrapper" >
+<label id="profile-edit-politic-label" for="profile-edit-politic" >{{$lbl_politic}} </label>
+<input type="text" size="32" name="politic" id="profile-edit-politic" value="{{$politic}}" />
+</div>
+<div id="profile-edit-politic-end"></div>
+
+<div id="profile-edit-religion-wrapper" >
+<label id="profile-edit-religion-label" for="profile-edit-religion" >{{$lbl_religion}} </label>
+<input type="text" size="32" name="religion" id="profile-edit-religion" value="{{$religion}}" />
+</div>
+<div id="profile-edit-religion-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}}" />
+</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}}" />
+</div><div id="profile-edit-prvkeywords-desc">{{$lbl_prvdsc}}</div>
+<div id="profile-edit-prvkeywords-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>
+
+<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 id="interest-jot-wrapper" >
+<p id="interest-jot-desc" >
+{{$lbl_hobbies}}
+</p>
+
+<textarea rows="10" cols="72" id="interest-jot-text" name="interest" >{{$interest}}</textarea>
+
+</div>
+<div id="interest-jot-end"></div>
+
+
+<div id="likes-jot-wrapper" >
+<p id="likes-jot-desc" >
+{{$lbl_likes}}
+</p>
+
+<textarea rows="10" cols="72" id="likes-jot-text" name="likes" >{{$likes}}</textarea>
+
+</div>
+<div id="likes-jot-end"></div>
+
+
+<div id="dislikes-jot-wrapper" >
+<p id="dislikes-jot-desc" >
+{{$lbl_dislikes}}
+</p>
+
+<textarea rows="10" cols="72" id="dislikes-jot-text" name="dislikes" >{{$dislikes}}</textarea>
+
+</div>
+<div id="dislikes-jot-end"></div>
+
+
+<div id="contact-jot-wrapper" >
+<p id="contact-jot-desc" >
+{{$lbl_social}}
+</p>
+
+<textarea rows="10" cols="72" id="contact-jot-text" name="contact" >{{$contact}}</textarea>
+
+</div>
+<div id="contact-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>
+
+
+<div id="music-jot-wrapper" >
+<p id="music-jot-desc" >
+{{$lbl_music}}
+</p>
+
+<textarea rows="10" cols="72" id="music-jot-text" name="music" >{{$music}}</textarea>
+
+</div>
+<div id="music-jot-end"></div>
+
+<div id="book-jot-wrapper" >
+<p id="book-jot-desc" >
+{{$lbl_book}}
+</p>
+
+<textarea rows="10" cols="72" id="book-jot-text" name="book" >{{$book}}</textarea>
+
+</div>
+<div id="book-jot-end"></div>
+
+
+
+<div id="tv-jot-wrapper" >
+<p id="tv-jot-desc" >
+{{$lbl_tv}}
+</p>
+
+<textarea rows="10" cols="72" id="tv-jot-text" name="tv" >{{$tv}}</textarea>
+
+</div>
+<div id="tv-jot-end"></div>
+
+
+
+<div id="film-jot-wrapper" >
+<p id="film-jot-desc" >
+{{$lbl_film}}
+</p>
+
+<textarea rows="10" cols="72" id="film-jot-text" name="film" >{{$film}}</textarea>
+
+</div>
+<div id="film-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>
+
+
+<div id="romance-jot-wrapper" >
+<p id="romance-jot-desc" >
+{{$lbl_love}}
+</p>
+
+<textarea rows="10" cols="72" id="romance-jot-text" name="romance" >{{$romance}}</textarea>
+
+</div>
+<div id="romance-jot-end"></div>
+
+
+
+<div id="work-jot-wrapper" >
+<p id="work-jot-desc" >
+{{$lbl_work}}
+</p>
+
+<textarea rows="10" cols="72" id="work-jot-text" name="work" >{{$work}}</textarea>
+
+</div>
+<div id="work-jot-end"></div>
+
+
+
+<div id="education-jot-wrapper" >
+<p id="education-jot-desc" >
+{{$lbl_school}}
+</p>
+
+<textarea rows="10" cols="72" id="education-jot-text" name="education" >{{$education}}</textarea>
+
+</div>
+<div id="education-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>
+
+
+</form>
+</div>
+<script type="text/javascript">Fill_Country('{{$country_name}}');Fill_States('{{$region}}');</script>
diff --git a/view/tpl/smarty3/profile_edlink.tpl b/view/tpl/smarty3/profile_edlink.tpl
new file mode 100644
index 000000000..2f4600a87
--- /dev/null
+++ b/view/tpl/smarty3/profile_edlink.tpl
@@ -0,0 +1,2 @@
+<div class="profile-edit-side-div"><a class="profile-edit-side-link icon edit" title="{{$editprofile}}" href="profiles/{{$profid}}" ></a></div>
+<div class="clear"></div> \ No newline at end of file
diff --git a/view/tpl/smarty3/profile_entry.tpl b/view/tpl/smarty3/profile_entry.tpl
new file mode 100644
index 000000000..e06307c8b
--- /dev/null
+++ b/view/tpl/smarty3/profile_entry.tpl
@@ -0,0 +1,11 @@
+
+<div class="profile-listing" >
+<div class="profile-listing-photo-wrapper" >
+<a href="profiles/{{$id}}" class="profile-listing-edit-link"><img class="profile-listing-photo" id="profile-listing-photo-{{$id}}" src="{{$photo}}" alt="{{$alt}}" /></a>
+</div>
+<div class="profile-listing-photo-end"></div>
+<div class="profile-listing-name" id="profile-listing-name-{{$id}}"><a href="profiles/{{$id}}" class="profile-listing-edit-link" >{{$profile_name}}</a></div>
+<div class="profile-listing-visible">{{$visible}}</div>
+</div>
+<div class="profile-listing-end"></div>
+
diff --git a/view/tpl/smarty3/profile_listing_header.tpl b/view/tpl/smarty3/profile_listing_header.tpl
new file mode 100644
index 000000000..b771a1ea2
--- /dev/null
+++ b/view/tpl/smarty3/profile_listing_header.tpl
@@ -0,0 +1,8 @@
+<h1>{{$header}}</h1>
+<p id="profile-listing-desc" class="button" >
+<a href="profile_photo" >{{$chg_photo}}</a>
+</p>
+<div id="profile-listing-new-link-wrapper" class="button" >
+<a href="{{$cr_new_link}}" id="profile-listing-new-link" title="{{$cr_new}}" >{{$cr_new}}</a>
+</div>
+
diff --git a/view/tpl/smarty3/profile_photo.tpl b/view/tpl/smarty3/profile_photo.tpl
new file mode 100644
index 000000000..d73779e20
--- /dev/null
+++ b/view/tpl/smarty3/profile_photo.tpl
@@ -0,0 +1,26 @@
+<h1>{{$title}}</h1>
+
+<form enctype="multipart/form-data" action="profile_photo" method="post">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+<div id="profile-photo-upload-wrapper">
+<label id="profile-photo-upload-label" for="profile-photo-upload">{{$lbl_upfile}} </label>
+<input name="userfile" type="file" id="profile-photo-upload" size="48" />
+</div>
+
+<label id="profile-photo-profiles-label" for="profile-photo-profiles">{{$lbl_profiles}} </label>
+<select name="profile" id="profile-photo-profiles" />
+{{foreach $profiles as $p}}
+<option value="{{$p.id}}" {{if $p.default}}selected="selected"{{/if}}>{{$p.name}}</option>
+{{/foreach}}
+</select>
+
+<div id="profile-photo-submit-wrapper">
+<input type="submit" name="submit" id="profile-photo-submit" value="{{$submit}}">
+</div>
+
+</form>
+
+<div id="profile-photo-link-select-wrapper">
+{{$select}}
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/profile_publish.tpl b/view/tpl/smarty3/profile_publish.tpl
new file mode 100644
index 000000000..265c0c63c
--- /dev/null
+++ b/view/tpl/smarty3/profile_publish.tpl
@@ -0,0 +1,16 @@
+<p id="profile-publish-desc-{{$instance}}">
+{{$pubdesc}}
+</p>
+
+ <div id="profile-publish-yes-wrapper-{{$instance}}">
+ <label id="profile-publish-yes-label-{{$instance}}" for="profile-publish-yes-{{$instance}}">{{$str_yes}}</label>
+ <input type="radio" name="profile_publish_{{$instance}}" id="profile-publish-yes-{{$instance}}" {{$yes_selected}} value="1" />
+
+ <div id="profile-publish-break-{{$instance}}" ></div>
+ </div>
+ <div id="profile-publish-no-wrapper-{{$instance}}">
+ <label id="profile-publish-no-label-{{$instance}}" for="profile-publish-no-{{$instance}}">{{$str_no}}</label>
+ <input type="radio" name="profile_publish_{{$instance}}" id="profile-publish-no-{{$instance}}" {{$no_selected}} value="0" />
+
+ <div id="profile-publish-end-{{$instance}}"></div>
+ </div>
diff --git a/view/tpl/smarty3/profile_vcard.tpl b/view/tpl/smarty3/profile_vcard.tpl
new file mode 100644
index 000000000..d9bbd177c
--- /dev/null
+++ b/view/tpl/smarty3/profile_vcard.tpl
@@ -0,0 +1,48 @@
+<div class="vcard">
+
+ <div class="fn label">{{$profile.name}}</div>
+
+
+
+ {{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
+ <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
+
+
+
+ {{if $location}}
+ <dl class="location"><dt class="location-label">{{$location}}</dt>
+ <dd class="adr">
+ {{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}}
+ <span class="city-state-zip">
+ <span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
+ <span class="region">{{$profile.region}}</span>
+ <span class="postal-code">{{$profile.postal_code}}</span>
+ </span>
+ {{if $profile.country_name}}<span class="country-name">{{$profile.country_name}}</span>{{/if}}
+ </dd>
+ </dl>
+ {{/if}}
+
+ {{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender">{{$profile.gender}}</dd></dl>{{/if}}
+
+
+ {{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
+
+ {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" >{{$profile.homepage}}</a></dd></dl>{{/if}}
+
+
+ <div id="profile-extra-links">
+ <ul>
+ {{if $connect}}
+ <li><a id="dfrn-request-link" href="dfrn_request/{{$profile.nickname}}">{{$connect}}</a></li>
+ {{/if}}
+ {{if $wallmessage}}
+ <li><a id="wallmessage-link" href="wallmessage/{{$profile.nickname}}">{{$wallmessage}}</a></li>
+ {{/if}}
+ </ul>
+ </div>
+</div>
+
+{{$contact_block}}
+
+
diff --git a/view/tpl/smarty3/prv_message.tpl b/view/tpl/smarty3/prv_message.tpl
new file mode 100644
index 000000000..66007f803
--- /dev/null
+++ b/view/tpl/smarty3/prv_message.tpl
@@ -0,0 +1,33 @@
+
+<h3>{{$header}}</h3>
+
+<div id="prvmail-wrapper" >
+<form id="prvmail-form" action="message" method="post" >
+
+{{$parent}}
+
+<div id="prvmail-to-label">{{$to}}</div>
+{{$select}}
+
+<div id="prvmail-subject-label">{{$subject}}</div>
+<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" {{$readonly}} tabindex="11" />
+
+<div id="prvmail-message-label">{{$yourmessage}}</div>
+<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
+
+
+<div id="prvmail-submit-wrapper" >
+ <input type="submit" id="prvmail-submit" name="submit" value="{{$submit}}" tabindex="13" />
+ <div id="prvmail-upload-wrapper" >
+ <div id="prvmail-upload" class="icon border camera" title="{{$upload}}" ></div>
+ </div>
+ <div id="prvmail-link-wrapper" >
+ <div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();" ></div>
+ </div>
+ <div id="prvmail-rotator-wrapper" >
+ <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ </div>
+</div>
+<div id="prvmail-end"></div>
+</form>
+</div>
diff --git a/view/tpl/smarty3/pwdreset.tpl b/view/tpl/smarty3/pwdreset.tpl
new file mode 100644
index 000000000..3993dec64
--- /dev/null
+++ b/view/tpl/smarty3/pwdreset.tpl
@@ -0,0 +1,17 @@
+<h3>{{$lbl1}}</h3>
+
+<p>
+{{$lbl2}}
+</p>
+<p>
+{{$lbl3}}
+</p>
+<p>
+{{$newpass}}
+</p>
+<p>
+{{$lbl4}} {{$lbl5}}
+</p>
+<p>
+{{$lbl6}}
+</p>
diff --git a/view/tpl/smarty3/register.tpl b/view/tpl/smarty3/register.tpl
new file mode 100644
index 000000000..48c1ba525
--- /dev/null
+++ b/view/tpl/smarty3/register.tpl
@@ -0,0 +1,45 @@
+<h2>{{$title}}</h2>
+
+<form action="register" method="post" id="register-form">
+
+{{if $registertext}}
+<div id="register-desc" class="descriptive-paragraph">{{$registertext}}</div>
+{{/if}}
+
+{{if $invitations}}
+ <p id="register-invite-desc">{{$invite_desc}}</p>
+
+ <label for="register-invite" id="label-register-invite" class="register-label">{{$label_invite}}</label>
+ <input type="text" maxlength="72" size="32" name="invite_code" id="register-invite" class="register-input" value="{{$invite_code}}" />
+ <div id="register-invite-feedback" class="register-feedback"></div>
+ <div id="register-invite-end" class="register-field-end"></div>
+{{/if}}
+
+ <label for="register-email" id="label-register-email" class="register-label" >{{$label_email}}</label>
+ <input type="text" maxlength="72" size="32" name="email" id="register-email" class="register-input" value="{{$email}}" />
+ <div id="register-email-feedback" class="register-feedback"></div>
+ <div id="register-email-end" class="register-field-end"></div>
+
+ <label for="register-password" id="label-register-password" class="register-label" >{{$label_pass1}}</label>
+ <input type="password" maxlength="72" size="32" name="password" id="register-password" class="register-input" value="{{$pass1}}" />
+ <div id="register-password-feedback" class="register-feedback"></div>
+ <div id="register-password-end" class="register-field-end"></div>
+
+ <label for="register-password2" id="label-register-password2" class="register-label" >{{$label_pass2}}</label>
+ <input type="password" maxlength="72" size="32" name="password2" id="register-password2" class="register-input" value="{{$pass2}}" />
+ <div id="register-password2-feedback" class="register-feedback"></div>
+ <div id="register-password2-end" class="register-field-end"></div>
+
+ {{if $enable_tos}}
+ <input type="checkbox" name="tos" id="register-tos" value="1" />
+ <label for="register-tos" id="label-register-tos">{{$label_tos}}</label>
+ <div id="register-tos-feedback" class="register-feedback"></div>
+ <div id="register-tos-end" class="register-field-end"></div>
+ {{else}}
+ <input type="hidden" name="tos" value="1" />
+ {{/if}}
+
+ <input type="submit" name="submit" id="register-submit-button" value="{{$submit}}" />
+ <div id="register-submit-end" class="register-field-end"></div>
+
+</form>
diff --git a/view/tpl/smarty3/remote_friends_common.tpl b/view/tpl/smarty3/remote_friends_common.tpl
new file mode 100644
index 000000000..b68e1c347
--- /dev/null
+++ b/view/tpl/smarty3/remote_friends_common.tpl
@@ -0,0 +1,21 @@
+<div id="remote-friends-in-common" class="bigwidget">
+ <div id="rfic-desc">{{$desc}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{{if $linkmore}}<a href="{{$base}}/common/rem/{{$uid}}/{{$cid}}">{{$more}}</a>{{/if}}</div>
+ {{if $items}}
+ {{foreach $items as $item}}
+ <div class="profile-match-wrapper">
+ <div class="profile-match-photo">
+ <a href="{{$item.url}}">
+ <img src="{{$item.photo}}" width="80" height="80" alt="{{$item.name}}" title="{{$item.name}}" />
+ </a>
+ </div>
+ <div class="profile-match-break"></div>
+ <div class="profile-match-name">
+ <a href="{{$itemurl}}" title="{{$item.name}}">{{$item.name}}</a>
+ </div>
+ <div class="profile-match-end"></div>
+ </div>
+ {{/foreach}}
+ {{/if}}
+ <div id="rfic-end" class="clear"></div>
+</div>
+
diff --git a/view/tpl/smarty3/removeme.tpl b/view/tpl/smarty3/removeme.tpl
new file mode 100644
index 000000000..496f91ff5
--- /dev/null
+++ b/view/tpl/smarty3/removeme.tpl
@@ -0,0 +1,20 @@
+<h1>{{$title}}</h1>
+
+<div id="remove-account-wrapper">
+
+<div id="remove-account-desc">{{$desc}}</div>
+
+<form action="{{$basedir}}/removeme" autocomplete="off" method="post" >
+<input type="hidden" name="verify" value="{{$hash}}" />
+
+<div id="remove-account-pass-wrapper">
+<label id="remove-account-pass-label" for="remove-account-pass">{{$passwd}}</label>
+<input type="password" id="remove-account-pass" name="qxz_password" />
+</div>
+<div id="remove-account-pass-end"></div>
+
+<input type="submit" name="submit" value="{{$submit}}" />
+
+</form>
+</div>
+
diff --git a/view/tpl/smarty3/saved_searches_aside.tpl b/view/tpl/smarty3/saved_searches_aside.tpl
new file mode 100644
index 000000000..27c7d86a0
--- /dev/null
+++ b/view/tpl/smarty3/saved_searches_aside.tpl
@@ -0,0 +1,14 @@
+<div class="widget" id="saved-search-list">
+ <h3 id="search">{{$title}}</h3>
+ {{$searchbox}}
+
+ <ul id="saved-search-ul">
+ {{foreach $saved as $search}}
+ <li class="saved-search-li clear">
+ <a title="{{$search.delete}}" onclick="return confirmDelete();" id="drop-saved-search-term-{{$search.id}}" class="iconspacer savedsearchdrop " href="network/?f=&amp;remove=1&amp;search={{$search.encodedterm}}"></a>
+ <a id="saved-search-term-{{$search.id}}" class="savedsearchterm" href="network/?f=&amp;search={{$search.encodedterm}}">{{$search.displayterm}}</a>
+ </li>
+ {{/foreach}}
+ </ul>
+ <div class="clear"></div>
+</div>
diff --git a/view/tpl/smarty3/search_item.tpl b/view/tpl/smarty3/search_item.tpl
new file mode 100644
index 000000000..226c985cd
--- /dev/null
+++ b/view/tpl/smarty3/search_item.tpl
@@ -0,0 +1,62 @@
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}}" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info" id="wall-item-info-{{$item.id}}">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" /></a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>
+
+ <div id="wall-item-ago-{{$item.id}}" class="wall-item-ago"><abbr class="wall-item-ago-time" title="{{$item.localtime}}">{{$item.ago}}</abbr>{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}</div>
+
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.pagedropping}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+
+
+ <div class="wall-item-conv" id="wall-item-conv-{{$item.id}}" >
+ {{if $item.conv}}
+ <a href='{{$item.conv.href}}' id='context-{{$item.id}}' title='{{$item.conv.title}}'>{{$item.conv.title}}</a>
+ {{/if}}
+ </div>
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+
+</div>
+
+
diff --git a/view/tpl/smarty3/settings.tpl b/view/tpl/smarty3/settings.tpl
new file mode 100644
index 000000000..70664a6f2
--- /dev/null
+++ b/view/tpl/smarty3/settings.tpl
@@ -0,0 +1,134 @@
+<h1>{{$ptitle}}</h1>
+
+{{$nickname_block}}
+
+<form action="settings" id="settings-form" method="post" autocomplete="off" >
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+<h3 class="settings-heading">{{$h_basic}}</h3>
+
+{{include file="field_input.tpl" field=$username}}
+{{include file="field_custom.tpl" field=$timezone}}
+{{include file="field_input.tpl" field=$defloc}}
+{{include file="field_checkbox.tpl" field=$allowloc}}
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+
+<h3 class="settings-heading">{{$h_prv}}</h3>
+
+
+<input type="hidden" name="visibility" value="{{$visibility}}" />
+
+
+
+<div id="settings-permissions-wrapper">
+{{foreach $permiss_arr as $permit}}
+{{include file="field_select.tpl" field=$permit}}
+{{/foreach}}
+</div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+
+
+{{$profile_in_dir}}
+
+{{$blocktags}}
+
+{{$suggestme}}
+
+
+{{include file="field_input.tpl" field=$maxreq}}
+
+{{include file="field_input.tpl" field=$cntunkmail}}
+
+{{include file="field_input.tpl" field=$expire.days}}
+
+
+<div class="field input">
+ <span class="field_help"><a href="#advanced-expire-popup" id="advanced-expire" class='popupbox' title="{{$expire.advanced}}">{{$expire.label}}</a></span>
+ <div style="display: none;">
+ <div id="advanced-expire-popup" style="width:auto;height:auto;overflow:auto;">
+ <h3>{{$expire.advanced}}</h3>
+ {{include file="field_yesno.tpl" field=$expire.items}}
+ {{include file="field_yesno.tpl" field=$expire.notes}}
+ {{include file="field_yesno.tpl" field=$expire.starred}}
+ {{include file="field_yesno.tpl" field=$expire.network_only}}
+ </div>
+ </div>
+
+</div>
+
+<div id="settings-default-perms" class="settings-default-perms" >
+ <a href="#profile-jot-acl-wrapper" id="settings-default-perms-menu" class='popupbox'>{{$permissions}} {{$permdesc}}</a>
+ <div id="settings-default-perms-menu-end"></div>
+
+ <div id="settings-default-perms-select" style="display: none; margin-bottom: 20px" >
+
+ <div style="display: none;">
+ <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
+ {{$aclselect}}
+ </div>
+ </div>
+
+ </div>
+</div>
+<br/>
+<div id="settings-default-perms-end"></div>
+
+{{$group_select}}
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+
+
+<h3 class="settings-heading">{{$h_not}}</h3>
+<div id="settings-notifications">
+
+<div id="settings-activity-desc">{{$activity_options}}</div>
+
+{{include file="field_checkbox.tpl" field=$post_newfriend}}
+{{include file="field_checkbox.tpl" field=$post_joingroup}}
+{{include file="field_checkbox.tpl" field=$post_profilechange}}
+
+
+<div id="settings-notify-desc">{{$lbl_not}}</div>
+
+<div class="group">
+{{include file="field_intcheckbox.tpl" field=$notify1}}
+{{include file="field_intcheckbox.tpl" field=$notify2}}
+{{include file="field_intcheckbox.tpl" field=$notify3}}
+{{include file="field_intcheckbox.tpl" field=$notify4}}
+{{include file="field_intcheckbox.tpl" field=$notify5}}
+{{include file="field_intcheckbox.tpl" field=$notify6}}
+{{include file="field_intcheckbox.tpl" field=$notify7}}
+{{include file="field_intcheckbox.tpl" field=$notify8}}
+</div>
+
+</div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+
+<h3 class="settings-heading">{{$h_advn}}</h3>
+<div id="settings-pagetype-desc">{{$h_descadvn}}</div>
+
+{{$pagetype}}
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+
diff --git a/view/tpl/smarty3/settings_account.tpl b/view/tpl/smarty3/settings_account.tpl
new file mode 100644
index 000000000..198ac9565
--- /dev/null
+++ b/view/tpl/smarty3/settings_account.tpl
@@ -0,0 +1,28 @@
+<h1>{{$title}}</h1>
+
+
+<div id="settings-remove-account-link">
+<a href="removeme" title="{{$permanent}}" >{{$removeme}}</a>
+</div>
+
+
+<form action="settings/account" id="settings-account-form" method="post" autocomplete="off" >
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{include file="field_input.tpl" field=$email}}
+
+
+<h3 class="settings-heading">{{$h_pass}}</h3>
+
+{{include file="field_password.tpl" field=$password1}}
+{{include file="field_password.tpl" field=$password2}}
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+{{$account_settings}}
+
+
+
diff --git a/view/tpl/smarty3/settings_addons.tpl b/view/tpl/smarty3/settings_addons.tpl
new file mode 100644
index 000000000..afddafb36
--- /dev/null
+++ b/view/tpl/smarty3/settings_addons.tpl
@@ -0,0 +1,10 @@
+<h1>{{$title}}</h1>
+
+
+<form action="settings/addon" method="post" autocomplete="off">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{$settings_addons}}
+
+</form>
+
diff --git a/view/tpl/smarty3/settings_connectors.tpl b/view/tpl/smarty3/settings_connectors.tpl
new file mode 100644
index 000000000..a8bde4c1e
--- /dev/null
+++ b/view/tpl/smarty3/settings_connectors.tpl
@@ -0,0 +1,9 @@
+<h1>{{$title}}</h1>
+
+<form action="settings/connectors" method="post" autocomplete="off">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{$settings_connectors}}
+
+</form>
+
diff --git a/view/tpl/smarty3/settings_display.tpl b/view/tpl/smarty3/settings_display.tpl
new file mode 100644
index 000000000..f8b4c5130
--- /dev/null
+++ b/view/tpl/smarty3/settings_display.tpl
@@ -0,0 +1,22 @@
+<h1>{{$ptitle}}</h1>
+
+<form action="settings/display" id="settings-form" method="post" autocomplete="off" >
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{include file="field_themeselect.tpl" field=$theme}}
+{{include file="field_themeselect.tpl" field=$mobile_theme}}
+{{include file="field_input.tpl" field=$ajaxint}}
+{{include file="field_input.tpl" field=$itemspage_network}}
+{{include file="field_checkbox.tpl" field=$nosmile}}
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+</div>
+
+{{if $theme_config}}
+<h2>Theme settings</h2>
+{{$theme_config}}
+{{/if}}
+
+</form>
diff --git a/view/tpl/smarty3/settings_features.tpl b/view/tpl/smarty3/settings_features.tpl
new file mode 100644
index 000000000..3145f60ee
--- /dev/null
+++ b/view/tpl/smarty3/settings_features.tpl
@@ -0,0 +1,16 @@
+<h1>{{$title}}</h1>
+
+
+<form action="settings/features" method="post" autocomplete="off">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{foreach $features as $f}}
+ {{include file="field_yesno.tpl" field=$f}}
+{{/foreach}}
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-features-submit" value="{{$submit}}" />
+</div>
+
+</form>
+
diff --git a/view/tpl/smarty3/settings_nick_set.tpl b/view/tpl/smarty3/settings_nick_set.tpl
new file mode 100644
index 000000000..85956d97c
--- /dev/null
+++ b/view/tpl/smarty3/settings_nick_set.tpl
@@ -0,0 +1,5 @@
+
+<div id="settings-nick-wrapper" >
+<div id="settings-nickname-desc" class="info-message">{{$desc}} <strong>'{{$nickname}}@{{$basepath}}'</strong>{{$subdir}}</div>
+</div>
+<div id="settings-nick-end" ></div>
diff --git a/view/tpl/smarty3/settings_nick_subdir.tpl b/view/tpl/smarty3/settings_nick_subdir.tpl
new file mode 100644
index 000000000..a271e0f05
--- /dev/null
+++ b/view/tpl/smarty3/settings_nick_subdir.tpl
@@ -0,0 +1,6 @@
+<p>
+It appears that your website is located in a subdirectory of the<br />
+{{$hostname}} website, so this setting may not work reliably.<br />
+</p>
+<p>If you have any issues, you may have better results using the profile<br /> address '<strong>{{$baseurl}}/profile/{{$nickname}}</strong>'.
+</p> \ No newline at end of file
diff --git a/view/tpl/smarty3/settings_oauth.tpl b/view/tpl/smarty3/settings_oauth.tpl
new file mode 100644
index 000000000..11c61a43e
--- /dev/null
+++ b/view/tpl/smarty3/settings_oauth.tpl
@@ -0,0 +1,31 @@
+<h1>{{$title}}</h1>
+
+
+<form action="settings/oauth" method="post" autocomplete="off">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+ <div id="profile-edit-links">
+ <ul>
+ <li>
+ <a id="profile-edit-view-link" href="{{$baseurl}}/settings/oauth/add">{{$add}}</a>
+ </li>
+ </ul>
+ </div>
+
+ {{foreach $apps as $app}}
+ <div class='oauthapp'>
+ <img src='{{$app.icon}}' class="{{if $app.icon}} {{else}}noicon{{/if}}">
+ {{if $app.name}}<h4>{{$app.name}}</h4>{{else}}<h4>{{$noname}}</h4>{{/if}}
+ {{if $app.my}}
+ {{if $app.oauth_token}}
+ <div class="settings-submit-wrapper" ><button class="settings-submit" type="submit" name="remove" value="{{$app.oauth_token}}">{{$remove}}</button></div>
+ {{/if}}
+ {{/if}}
+ {{if $app.my}}
+ <a href="{{$baseurl}}/settings/oauth/edit/{{$app.client_id}}" class="icon s22 edit" title="{{$edit}}">&nbsp;</a>
+ <a href="{{$baseurl}}/settings/oauth/delete/{{$app.client_id}}?t={{$form_security_token}}" class="icon s22 delete" title="{{$delete}}">&nbsp;</a>
+ {{/if}}
+ </div>
+ {{/foreach}}
+
+</form>
diff --git a/view/tpl/smarty3/settings_oauth_edit.tpl b/view/tpl/smarty3/settings_oauth_edit.tpl
new file mode 100644
index 000000000..bf805363c
--- /dev/null
+++ b/view/tpl/smarty3/settings_oauth_edit.tpl
@@ -0,0 +1,17 @@
+<h1>{{$title}}</h1>
+
+<form method="POST">
+<input type='hidden' name='form_security_token' value='{{$form_security_token}}'>
+
+{{include file="field_input.tpl" field=$name}}
+{{include file="field_input.tpl" field=$key}}
+{{include file="field_input.tpl" field=$secret}}
+{{include file="field_input.tpl" field=$redirect}}
+{{include file="field_input.tpl" field=$icon}}
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="{{$submit}}" />
+<input type="submit" name="cancel" class="settings-submit" value="{{$cancel}}" />
+</div>
+
+</form>
diff --git a/view/tpl/smarty3/suggest_friends.tpl b/view/tpl/smarty3/suggest_friends.tpl
new file mode 100644
index 000000000..c8b9dd28d
--- /dev/null
+++ b/view/tpl/smarty3/suggest_friends.tpl
@@ -0,0 +1,16 @@
+<div class="profile-match-wrapper">
+ <a href="{{$ignlnk}}" title="{{$ignore}}" class="icon drophide profile-match-ignore" onmouseout="imgdull(this);" onmouseover="imgbright(this);" onclick="return confirmDelete();" ></a>
+ <div class="profile-match-photo">
+ <a href="{{$url}}">
+ <img src="{{$photo}}" alt="{{$name}}" width="80" height="80" title="{{$name}} [{{$url}}]" />
+ </a>
+ </div>
+ <div class="profile-match-break"></div>
+ <div class="profile-match-name">
+ <a href="{{$url}}" title="{{$name}}">{{$name}}</a>
+ </div>
+ <div class="profile-match-end"></div>
+ {{if $connlnk}}
+ <div class="profile-match-connect"><a href="{{$connlnk}}" title="{{$conntxt}}">{{$conntxt}}</a></div>
+ {{/if}}
+</div> \ No newline at end of file
diff --git a/view/tpl/smarty3/suggestions.tpl b/view/tpl/smarty3/suggestions.tpl
new file mode 100644
index 000000000..02460b6ad
--- /dev/null
+++ b/view/tpl/smarty3/suggestions.tpl
@@ -0,0 +1,21 @@
+
+<div class="intro-wrapper" >
+
+<p class="intro-desc">{{$str_notifytype}} {{$notify_type}}</p>
+<div class="intro-madeby">{{$madeby}}</div>
+<div class="intro-fullname" >{{$fullname}}</div>
+<a class="intro-url-link" href="{{$url}}" ><img class="intro-photo lframe" src="{{$photo}}" width="175" height=175" title="{{$fullname}}" alt="{{$fullname}}" /></a>
+<div class="intro-note" >{{$note}}</div>
+<div class="intro-wrapper-end"></div>
+<form class="intro-form" action="notifications/{{$intro_id}}" method="post">
+<input class="intro-submit-ignore" type="submit" name="submit" value="{{$ignore}}" />
+<input class="intro-submit-discard" type="submit" name="submit" value="{{$discard}}" />
+</form>
+<div class="intro-form-end"></div>
+
+<form class="intro-approve-form" action="{{$request}}" method="get">
+{{include file="field_checkbox.tpl" field=$hidden}}
+<input class="intro-submit-approve" type="submit" name="submit" value="{{$approve}}" />
+</form>
+</div>
+<div class="intro-end"></div>
diff --git a/view/tpl/smarty3/tag_slap.tpl b/view/tpl/smarty3/tag_slap.tpl
new file mode 100644
index 000000000..c5ed8d148
--- /dev/null
+++ b/view/tpl/smarty3/tag_slap.tpl
@@ -0,0 +1,30 @@
+ <entry>
+ <author>
+ <name>{{$name}}</name>
+ <uri>{{$profile_page}}</uri>
+ <link rel="photo" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}" />
+ <link rel="avatar" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}" />
+ </author>
+
+ <id>{{$item_id}}</id>
+ <title>{{$title}}</title>
+ <published>{{$published}}</published>
+ <content type="{{$type}}" >{{$content}}</content>
+ <link rel="mentioned" href="{{$accturi}}" />
+ <as:actor>
+ <as:obj_type>http://activitystrea.ms/schema/1.0/person</as:obj_type>
+ <id>{{$profile_page}}</id>
+ <title></title>
+ <link rel="avatar" type="image/jpeg" media:width="175" media:height="175" href="{{$photo}}"/>
+ <link rel="avatar" type="image/jpeg" media:width="80" media:height="80" href="{{$thumb}}"/>
+ <poco:preferredUsername>{{$nick}}</poco:preferredUsername>
+ <poco:displayName>{{$name}}</poco:displayName>
+ </as:actor>
+ <as:verb>{{$verb}}</as:verb>
+ <as:object>
+ <as:obj_type></as:obj_type>
+ </as:object>
+ <as:target>
+ <as:obj_type></as:obj_type>
+ </as:target>
+ </entry>
diff --git a/view/tpl/smarty3/threaded_conversation.tpl b/view/tpl/smarty3/threaded_conversation.tpl
new file mode 100644
index 000000000..e452fc0b5
--- /dev/null
+++ b/view/tpl/smarty3/threaded_conversation.tpl
@@ -0,0 +1,13 @@
+{{foreach $threads as $thread}}
+{{include file="{{$thread.template}}" item=$thread}}
+{{/foreach}}
+
+<div id="conversation-end"></div>
+
+{{if $dropping}}
+<div id="item-delete-selected" class="fakelink" onclick="deleteCheckedItems();">
+ <div id="item-delete-selected-icon" class="icon drophide" title="{{$dropping}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></div>
+ <div id="item-delete-selected-desc" >{{$dropping}}</div>
+</div>
+<div id="item-delete-selected-end"></div>
+{{/if}}
diff --git a/view/tpl/smarty3/viewcontact_template.tpl b/view/tpl/smarty3/viewcontact_template.tpl
new file mode 100644
index 000000000..18fed6bb4
--- /dev/null
+++ b/view/tpl/smarty3/viewcontact_template.tpl
@@ -0,0 +1,9 @@
+<h3>{{$title}}</h3>
+
+{{foreach $contacts as $contact}}
+ {{include file="contact_template.tpl"}}
+{{/foreach}}
+
+<div id="view-contact-end"></div>
+
+{{$paginate}}
diff --git a/view/tpl/smarty3/wall_item.tpl b/view/tpl/smarty3/wall_item.tpl
new file mode 100644
index 000000000..e810290e6
--- /dev/null
+++ b/view/tpl/smarty3/wall_item.tpl
@@ -0,0 +1,79 @@
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}}" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info" id="wall-item-info-{{$item.id}}">
+ <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" />
+ </a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>
+ <div id="wall-item-ago-{{$item.id}}" class="wall-item-ago"><abbr class="wall-item-ago-time" title="{{$item.localtime}}">{{$item.ago}}</abbr>{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}</div>
+
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ {{if $item.vote}}
+ <div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$item.id}}">
+ <a href="#" class="icon like" title="{{$item.vote.like.0}}" onclick="dolike({{$item.id}},'like'); return false"></a>
+ <a href="#" class="icon dislike" title="{{$item.vote.dislike.0}}" onclick="dolike({{$item.id}},'dislike'); return false"></a>
+ {{if $item.vote.share}}<a href="#" class="icon recycle wall-item-share-buttons" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}}); return false"></a>{{/if}}
+ <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />
+ </div>
+ {{/if}}
+ {{if $item.plink}}
+ <div class="wall-item-links-wrapper"><a href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="icon remote-link{{$item.sparkle}}"></a></div>
+ {{/if}}
+ {{if $item.edpost}}
+ <a class="editpost icon pencil" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"></a>
+ {{/if}}
+
+ {{if $item.star}}
+ <a href="#" id="starred-{{$item.id}}" onclick="dostar({{$item.id}}); return false;" class="star-item icon {{$item.isstarred}}" title="{{$item.star.toggle}}"></a>
+ <a href="#" id="tagger-{{$item.id}}" onclick="itemTag({{$item.id}}); return false;" class="tag-item icon tagged" title="{{$item.star.tagger}}"></a>
+ {{/if}}
+ {{if $item.filer}}
+ <a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon" title="{{$item.filer}}"></a>
+ {{/if}}
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.pagedropping}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like {{$item.indent}}" id="wall-item-like-{{$item.id}}">{{$item.like}}</div>
+ <div class="wall-item-dislike {{$item.indent}}" id="wall-item-dislike-{{$item.id}}">{{$item.dislike}}</div>
+ <div class="wall-item-comment-wrapper" >
+ {{$item.comment}}
+ </div>
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+</div>
diff --git a/view/tpl/smarty3/wall_thread.tpl b/view/tpl/smarty3/wall_thread.tpl
new file mode 100644
index 000000000..6b5d34d84
--- /dev/null
+++ b/view/tpl/smarty3/wall_thread.tpl
@@ -0,0 +1,120 @@
+{{if $item.comment_firstcollapsed}}
+ <div class="hide-comments-outer">
+ <span id="hide-comments-total-{{$item.id}}" class="hide-comments-total">{{$item.num_comments}}</span> <span id="hide-comments-{{$item.id}}" class="hide-comments fakelink" onclick="showHideComments({{$item.id}});">{{$item.hide_text}}</span>
+ </div>
+ <div id="collapsed-comments-{{$item.id}}" class="collapsed-comments" style="display: none;">
+{{/if}}
+<div id="thread-wrapper-{{$item.id}}" class="thread-wrapper {{$item.toplevel}}">
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}}{{if $item.owner_url}} wallwall{{/if}}" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info{{if $item.owner_url}} wallwall{{/if}}" id="wall-item-info-{{$item.id}}">
+ {{if $item.owner_url}}
+ <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-{{$item.id}}" >
+ <a href="{{$item.owner_url}}" target="redir" title="{{$item.olinktitle}}" class="wall-item-photo-link" id="wall-item-ownerphoto-link-{{$item.id}}">
+ <img src="{{$item.owner_photo}}" class="wall-item-photo{{$item.osparkle}}" id="wall-item-ownerphoto-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.owner_name}}" /></a>
+ </div>
+ <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="{{$item.wall}}" /></div>
+ {{/if}}
+ <div class="wall-item-photo-wrapper{{if $item.owner_url}} wwfrom{{/if}}" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" target="redir" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" /></a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" target="redir" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a>{{if $item.owner_url}} {{$item.to}} <a href="{{$item.owner_url}}" target="redir" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a> {{$item.vwall}}{{/if}}<br />
+ <div class="wall-item-ago" id="wall-item-ago-{{$item.id}}" title="{{$item.localtime}}">{{$item.ago}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ {{if $item.has_cats}}
+ <div class="categorytags"><span>{{$item.txt_cats}} {{foreach $item.categories as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+
+ {{if $item.has_folders}}
+ <div class="filesavetags"><span>{{$item.txt_folders}} {{foreach $item.folders as $cat}}{{$cat.name}} <a href="{{$cat.removeurl}}" title="{{$remove}}">[{{$remove}}]</a> {{if $cat.last}}{{else}}, {{/if}}{{/foreach}}
+ </div>
+ {{/if}}
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ {{if $item.vote}}
+ <div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$item.id}}">
+ <a href="#" class="icon like" title="{{$item.vote.like.0}}" onclick="dolike({{$item.id}},'like'); return false"></a>
+ {{if $item.nolike}}
+ <a href="#" class="icon dislike" title="{{$item.vote.dislike.0}}" onclick="dolike({{$item.id}},'dislike'); return false"></a>
+ {{/if}}
+ {{if $item.vote.share}}<a href="#" class="icon recycle wall-item-share-buttons" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}}); return false"></a>{{/if}}
+ </div>
+ {{/if}}
+ {{if $item.plink}}
+ <div class="wall-item-links-wrapper"><a href="{{$item.plink.href}}" title="{{$item.plink.title}}" target="external-link" class="icon remote-link{{$item.sparkle}}"></a></div>
+ {{/if}}
+ {{if $item.edpost}}
+ <a class="editpost icon pencil" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"></a>
+ {{/if}}
+
+ {{if $item.star}}
+ <a href="#" id="starred-{{$item.id}}" onclick="dostar({{$item.id}}); return false;" class="star-item icon {{$item.isstarred}}" title="{{$item.star.toggle}}"></a>
+ <a href="#" id="tagger-{{$item.id}}" onclick="itemTag({{$item.id}}); return false;" class="tag-item icon tagged" title="{{$item.star.tagger}}"></a>
+ {{/if}}
+ {{if $item.filer}}
+ <a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon" title="{{$item.filer}}"></a>
+ {{/if}}
+ <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />
+
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.pagedrop}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like {{$item.indent}}" id="wall-item-like-{{$item.id}}">{{$item.like}}</div>
+ <div class="wall-item-dislike {{$item.indent}}" id="wall-item-dislike-{{$item.id}}">{{$item.dislike}}</div>
+
+ {{if $item.threaded}}
+ {{if $item.comment}}
+ <div class="wall-item-comment-wrapper {{$item.indent}}" >
+ {{$item.comment}}
+ </div>
+ {{/if}}
+ {{/if}}
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+</div>
+{{foreach $item.children as $child}}
+ {{include file="{{$child.template}}" item=$child}}
+{{/foreach}}
+
+{{if $item.flatten}}
+<div class="wall-item-comment-wrapper" >
+ {{$item.comment}}
+</div>
+{{/if}}
+</div>
+{{if $item.comment_lastcollapsed}}</div>{{/if}}
diff --git a/view/tpl/smarty3/wallmessage.tpl b/view/tpl/smarty3/wallmessage.tpl
new file mode 100644
index 000000000..bea386b95
--- /dev/null
+++ b/view/tpl/smarty3/wallmessage.tpl
@@ -0,0 +1,32 @@
+
+<h3>{{$header}}</h3>
+
+<h4>{{$subheader}}</h4>
+
+<div id="prvmail-wrapper" >
+<form id="prvmail-form" action="wallmessage/{{$nickname}}" method="post" >
+
+{{$parent}}
+
+<div id="prvmail-to-label">{{$to}}</div>
+{{$recipname}}
+
+<div id="prvmail-subject-label">{{$subject}}</div>
+<input type="text" size="64" maxlength="255" id="prvmail-subject" name="subject" value="{{$subjtxt}}" {{$readonly}} tabindex="11" />
+
+<div id="prvmail-message-label">{{$yourmessage}}</div>
+<textarea rows="8" cols="72" class="prvmail-text" id="prvmail-text" name="body" tabindex="12">{{$text}}</textarea>
+
+
+<div id="prvmail-submit-wrapper" >
+ <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
+ <div id="prvmail-link-wrapper" >
+ <div id="prvmail-link" class="icon border link" title="{{$insert}}" onclick="jotGetLink();" ></div>
+ </div>
+ <div id="prvmail-rotator-wrapper" >
+ <img id="prvmail-rotator" src="images/rotator.gif" alt="{{$wait}}" title="{{$wait}}" style="display: none;" />
+ </div>
+</div>
+<div id="prvmail-end"></div>
+</form>
+</div>
diff --git a/view/tpl/smarty3/wallmsg-header.tpl b/view/tpl/smarty3/wallmsg-header.tpl
new file mode 100644
index 000000000..09f5b30a7
--- /dev/null
+++ b/view/tpl/smarty3/wallmsg-header.tpl
@@ -0,0 +1,82 @@
+
+<script language="javascript" type="text/javascript" src="{{$baseurl}}/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+<script language="javascript" type="text/javascript">
+
+var plaintext = '{{$editselect}}';
+
+if(plaintext != 'none') {
+ tinyMCE.init({
+ theme : "advanced",
+ mode : "specific_textareas",
+ editor_selector: /(profile-jot-text|prvmail-text)/,
+ plugins : "bbcode,paste",
+ theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor",
+ theme_advanced_buttons2 : "",
+ theme_advanced_buttons3 : "",
+ theme_advanced_toolbar_location : "top",
+ theme_advanced_toolbar_align : "center",
+ theme_advanced_blockformats : "blockquote,code",
+ gecko_spellcheck : true,
+ paste_text_sticky : true,
+ entity_encoding : "raw",
+ add_unload_trigger : false,
+ remove_linebreaks : false,
+ force_p_newlines : false,
+ force_br_newlines : true,
+ forced_root_block : '',
+ convert_urls: false,
+ content_css: "{{$baseurl}}/view/custom_tinymce.css",
+ //Character count
+ theme_advanced_path : false,
+ setup : function(ed) {
+ ed.onInit.add(function(ed) {
+ ed.pasteAsPlainText = true;
+ var editorId = ed.editorId;
+ var textarea = $('#'+editorId);
+ if (typeof(textarea.attr('tabindex')) != "undefined") {
+ $('#'+editorId+'_ifr').attr('tabindex', textarea.attr('tabindex'));
+ textarea.attr('tabindex', null);
+ }
+ });
+ }
+ });
+}
+else
+ $("#prvmail-text").contact_autocomplete(baseurl+"/acl");
+
+
+</script>
+<script>
+
+ function jotGetLink() {
+ reply = prompt("{{$linkurl}}");
+ if(reply && reply.length) {
+ $('#profile-rotator').show();
+ $.get('parse_url?url=' + reply, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#profile-rotator').hide();
+ });
+ }
+ }
+
+ function linkdropper(event) {
+ var linkFound = event.dataTransfer.types.contains("text/uri-list");
+ if(linkFound)
+ event.preventDefault();
+ }
+
+ function linkdrop(event) {
+ var reply = event.dataTransfer.getData("text/uri-list");
+ event.target.textContent = reply;
+ event.preventDefault();
+ if(reply && reply.length) {
+ $('#profile-rotator').show();
+ $.get('parse_url?url=' + reply, function(data) {
+ tinyMCE.execCommand('mceInsertRawHTML',false,data);
+ $('#profile-rotator').hide();
+ });
+ }
+ }
+
+</script>
+
diff --git a/view/tpl/smarty3/wallwall_item.tpl b/view/tpl/smarty3/wallwall_item.tpl
new file mode 100644
index 000000000..4616cf0fa
--- /dev/null
+++ b/view/tpl/smarty3/wallwall_item.tpl
@@ -0,0 +1,86 @@
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}} wallwall" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info wallwall" id="wall-item-info-{{$item.id}}">
+ <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-{{$item.id}}" >
+ <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-photo-link" id="wall-item-ownerphoto-link-{{$item.id}}">
+ <img src="{{$item.owner_photo}}" class="wall-item-photo{{$item.osparkle}}" id="wall-item-ownerphoto-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.owner_name}}" /></a>
+ </div>
+ <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="{{$item.wall}}" /></div>
+ <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" /></a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a> {{$item.to}} <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a> {{$item.vwall}}<br />
+ <div id="wall-item-ago-{{$item.id}}" class="wall-item-ago"><abbr class="wall-item-ago-time" title="{{$item.localtime}}">{{$item.ago}}</abbr>{{if $item.app}}<span class="item.app">{{$item.str_app}}</span>{{/if}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ {{if $item.vote}}
+ <div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$item.id}}">
+ <a href="#" class="icon like" title="{{$item.vote.like.0}}" onclick="dolike({{$item.id}},'like'); return false"></a>
+ <a href="#" class="icon dislike" title="{{$item.vote.dislike.0}}" onclick="dolike({{$item.id}},'dislike'); return false"></a>
+ {{if $item.vote.share}}<a href="#" class="icon recycle wall-item-share-buttons" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}}); return false"></a>{{/if}}
+ <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />
+ </div>
+ {{/if}}
+ {{if $item.plink}}
+ <div class="wall-item-links-wrapper"><a href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="icon remote-link{{$item.sparkle}}"></a></div>
+ {{/if}}
+ {{if $item.edpost}}
+ <a class="editpost icon pencil" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"></a>
+ {{/if}}
+
+ {{if $item.star}}
+ <a href="#" id="starred-{{$item.id}}" onclick="dostar({{$item.id}}); return false;" class="star-item icon {{$item.isstarred}}" title="{{$item.star.toggle}}"></a>
+ <a href="#" id="tagger-{{$item.id}}" onclick="itemTag({{$item.id}}); return false;" class="tag-item icon tagged" title="{{$item.star.tagger}}"></a>
+ {{/if}}
+ {{if $item.filer}}
+ <a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon" title="{{$item.filer}}"></a>
+ {{/if}}
+
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.pagedropping}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like {{$item.indent}}" id="wall-item-like-{{$item.id}}">{{$item.like}}</div>
+ <div class="wall-item-dislike {{$item.indent}}" id="wall-item-dislike-{{$item.id}}">{{$item.dislike}}</div>
+ <div class="wall-item-comment-separator"></div>
+ <div class="wall-item-comment-wrapper">
+ {{$item.comment}}
+ </div>
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+</div>
+
diff --git a/view/tpl/smarty3/wallwall_thread.tpl b/view/tpl/smarty3/wallwall_thread.tpl
new file mode 100644
index 000000000..cc059429b
--- /dev/null
+++ b/view/tpl/smarty3/wallwall_thread.tpl
@@ -0,0 +1,107 @@
+{{if $item.comment_firstcollapsed}}
+ <div class="hide-comments-outer">
+ <span id="hide-comments-total-{{$item.id}}" class="hide-comments-total">{{$item.num_comments}}</span> <span id="hide-comments-{{$item.id}}" class="hide-comments fakelink" onclick="showHideComments({{$item.id}});">{{$item.hide_text}}</span>
+ </div>
+ <div id="collapsed-comments-{{$item.id}}" class="collapsed-comments" style="display: none;">
+{{/if}}
+<div id="tread-wrapper-{{$item.id}}" class="tread-wrapper {{$item.toplevel}}">
+<a name="{{$item.id}}" ></a>
+<div class="wall-item-outside-wrapper {{$item.indent}}{{$item.previewing}} wallwall" id="wall-item-outside-wrapper-{{$item.id}}" >
+ <div class="wall-item-content-wrapper {{$item.indent}}" id="wall-item-content-wrapper-{{$item.id}}" >
+ <div class="wall-item-info wallwall" id="wall-item-info-{{$item.id}}">
+ <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-{{$item.id}}" >
+ <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-photo-link" id="wall-item-ownerphoto-link-{{$item.id}}">
+ <img src="{{$item.owner_photo}}" class="wall-item-photo{{$item.osparkle}}" id="wall-item-ownerphoto-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.owner_name}}" /></a>
+ </div>
+ <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="{{$item.wall}}" /></div>
+ <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-{{$item.id}}"
+ onmouseover="if (typeof t{{$item.id}} != 'undefined') clearTimeout(t{{$item.id}}); openMenu('wall-item-photo-menu-button-{{$item.id}}')"
+ onmouseout="t{{$item.id}}=setTimeout('closeMenu(\'wall-item-photo-menu-button-{{$item.id}}\'); closeMenu(\'wall-item-photo-menu-{{$item.id}}\');',200)">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-photo-link" id="wall-item-photo-link-{{$item.id}}">
+ <img src="{{$item.thumb}}" class="wall-item-photo{{$item.sparkle}}" id="wall-item-photo-{{$item.id}}" style="height: 80px; width: 80px;" alt="{{$item.name}}" /></a>
+ <span onclick="openClose('wall-item-photo-menu-{{$item.id}}');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-{{$item.id}}">menu</span>
+ <div class="wall-item-photo-menu" id="wall-item-photo-menu-{{$item.id}}">
+ <ul>
+ {{$item.item_photo_menu}}
+ </ul>
+ </div>
+
+ </div>
+ <div class="wall-item-photo-end"></div>
+ <div class="wall-item-wrapper" id="wall-item-wrapper-{{$item.id}}" >
+ {{if $item.lock}}<div class="wall-item-lock"><img src="images/lock_icon.gif" class="lockview" alt="{{$item.lock}}" onclick="lockview(event,{{$item.id}});" /></div>
+ {{else}}<div class="wall-item-lock"></div>{{/if}}
+ <div class="wall-item-location" id="wall-item-location-{{$item.id}}">{{$item.location}}</div>
+ </div>
+ </div>
+ <div class="wall-item-author">
+ <a href="{{$item.profile_url}}" title="{{$item.linktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.sparkle}}" id="wall-item-name-{{$item.id}}" >{{$item.name}}</span></a> {{$item.to}} <a href="{{$item.owner_url}}" title="{{$item.olinktitle}}" class="wall-item-name-link"><span class="wall-item-name{{$item.osparkle}}" id="wall-item-ownername-{{$item.id}}">{{$item.owner_name}}</span></a> {{$item.vwall}}<br />
+ <div class="wall-item-ago" id="wall-item-ago-{{$item.id}}">{{$item.ago}}</div>
+ </div>
+ <div class="wall-item-content" id="wall-item-content-{{$item.id}}" >
+ <div class="wall-item-title" id="wall-item-title-{{$item.id}}">{{$item.title}}</div>
+ <div class="wall-item-title-end"></div>
+ <div class="wall-item-body" id="wall-item-body-{{$item.id}}" >{{$item.body}}
+ <div class="body-tag">
+ {{foreach $item.tags as $tag}}
+ <span class='tag'>{{$tag}}</span>
+ {{/foreach}}
+ </div>
+ </div>
+ </div>
+ <div class="wall-item-tools" id="wall-item-tools-{{$item.id}}">
+ {{if $item.vote}}
+ <div class="wall-item-like-buttons" id="wall-item-like-buttons-{{$item.id}}">
+ <a href="#" class="icon like" title="{{$item.vote.like.0}}" onclick="dolike({{$item.id}},'like'); return false"></a>
+ <a href="#" class="icon dislike" title="{{$item.vote.dislike.0}}" onclick="dolike({{$item.id}},'dislike'); return false"></a>
+ {{if $item.vote.share}}<a href="#" class="icon recycle wall-item-share-buttons" title="{{$item.vote.share.0}}" onclick="jotShare({{$item.id}}); return false"></a>{{/if}}
+ <img id="like-rotator-{{$item.id}}" class="like-rotator" src="images/rotator.gif" alt="{{$item.wait}}" title="{{$item.wait}}" style="display: none;" />
+ </div>
+ {{/if}}
+ {{if $item.plink}}
+ <div class="wall-item-links-wrapper"><a href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="icon remote-link{{$item.sparkle}}"></a></div>
+ {{/if}}
+ {{if $item.edpost}}
+ <a class="editpost icon pencil" href="{{$item.edpost.0}}" title="{{$item.edpost.1}}"></a>
+ {{/if}}
+
+ {{if $item.star}}
+ <a href="#" id="starred-{{$item.id}}" onclick="dostar({{$item.id}}); return false;" class="star-item icon {{$item.isstarred}}" title="{{$item.star.toggle}}"></a>
+ <a href="#" id="tagger-{{$item.id}}" onclick="itemTag({{$item.id}}); return false;" class="tag-item icon tagged" title="{{$item.star.tagger}}"></a>
+ {{/if}}
+ {{if $item.filer}}
+ <a href="#" id="filer-{{$item.id}}" onclick="itemFiler({{$item.id}}); return false;" class="filer-item filer-icon" title="{{$item.filer}}"></a>
+ {{/if}}
+
+ <div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-{{$item.id}}" >
+ {{if $item.drop.dropping}}<a href="item/drop/{{$item.id}}" onclick="return confirmDelete();" class="icon drophide" title="{{$item.drop.delete}}" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>{{/if}}
+ </div>
+ {{if $item.drop.dropping}}<input type="checkbox" onclick="checkboxhighlight(this);" title="{{$item.drop.select}}" class="item-select" name="itemselected[]" value="{{$item.id}}" />{{/if}}
+ <div class="wall-item-delete-end"></div>
+ </div>
+ </div>
+ <div class="wall-item-wrapper-end"></div>
+ <div class="wall-item-like {{$item.indent}}" id="wall-item-like-{{$item.id}}">{{$item.like}}</div>
+ <div class="wall-item-dislike {{$item.indent}}" id="wall-item-dislike-{{$item.id}}">{{$item.dislike}}</div>
+
+ {{if $item.threaded}}
+ {{if $item.comment}}
+ <div class="wall-item-comment-wrapper {{$item.indent}}" >
+ {{$item.comment}}
+ </div>
+ {{/if}}
+ {{/if}}
+
+<div class="wall-item-outside-wrapper-end {{$item.indent}}" ></div>
+</div>
+{{foreach $item.children as $item}}
+ {{include file="{{$item.template}}"}}
+{{/foreach}}
+
+{{if $item.flatten}}
+<div class="wall-item-comment-wrapper" >
+ {{$item.comment}}
+</div>
+{{/if}}
+</div>
+{{if $item.comment_lastcollapsed}}</div>{{/if}}
diff --git a/view/tpl/smarty3/xchan_vcard.tpl b/view/tpl/smarty3/xchan_vcard.tpl
new file mode 100644
index 000000000..ed0adb966
--- /dev/null
+++ b/view/tpl/smarty3/xchan_vcard.tpl
@@ -0,0 +1,4 @@
+<div class="vcard">
+<div class="fn">{{$name}}</div>
+<div id="profile-photo-wrapper"><img class="vcard-photo photo" src="{{$photo}}" alt="name" /></div>
+</div>
diff --git a/view/tpl/smarty3/xrd_diaspora.tpl b/view/tpl/smarty3/xrd_diaspora.tpl
new file mode 100644
index 000000000..aa0d8c740
--- /dev/null
+++ b/view/tpl/smarty3/xrd_diaspora.tpl
@@ -0,0 +1,3 @@
+ <Link rel="http://joindiaspora.com/seed_location" type="text/html" href="{{$baseurl}}/" />
+ <Link rel="http://joindiaspora.com/guid" type="text/html" href="{{$dspr_guid}}" />
+ <Link rel="diaspora-public-key" type="RSA" href="{{$dspr_key}}" />
diff --git a/view/tpl/smarty3/xrd_host.tpl b/view/tpl/smarty3/xrd_host.tpl
new file mode 100644
index 000000000..4bcc5bbdb
--- /dev/null
+++ b/view/tpl/smarty3/xrd_host.tpl
@@ -0,0 +1,18 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<XRD xmlns='http://docs.oasis-open.org/ns/xri/xrd-1.0'
+ xmlns:hm='http://host-meta.net/xrd/1.0'>
+
+ <hm:Host>{{$zhost}}</hm:Host>
+
+ <Link rel='lrdd' template='{{$domain}}/xrd/?uri={uri}' />
+ <Link rel='acct-mgmt' href='{{$domain}}/amcd' />
+ <Link rel='http://services.mozilla.com/amcd/0.1' href='{{$domain}}/amcd' />
+ <Link rel="http://oexchange.org/spec/0.8/rel/resident-target" type="application/xrd+xml"
+ href="{{$domain}}/oexchange/xrd" />
+
+ <Property xmlns:mk="http://salmon-protocol.org/ns/magic-key"
+ type="http://salmon-protocol.org/ns/magic-key"
+ mk:key_id="1">{{$bigkey}}</Property>
+
+
+</XRD>
diff --git a/view/tpl/smarty3/xrd_person.tpl b/view/tpl/smarty3/xrd_person.tpl
new file mode 100644
index 000000000..035ab251f
--- /dev/null
+++ b/view/tpl/smarty3/xrd_person.tpl
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
+
+ <Subject>{{$accturi}}</Subject>
+ <Alias>{{$accturi}}</Alias>
+ <Alias>{{$profile_url}}</Alias>
+
+ <Link rel="http://purl.org/macgirvin/dfrn/1.0"
+ href="{{$profile_url}}" />
+ <Link rel="http://schemas.google.com/g/2010#updates-from"
+ type="application/atom+xml"
+ href="{{$atom}}" />
+ <Link rel="http://webfinger.net/rel/profile-page"
+ type="text/html"
+ href="{{$profile_url}}" />
+ <Link rel="http://microformats.org/profile/hcard"
+ type="text/html"
+ href="{{$hcard_url}}" />
+ <Link rel="http://portablecontacts.net/spec/1.0"
+ href="{{$poco_url}}" />
+ <Link rel="http://webfinger.net/rel/avatar"
+ type="image/jpeg"
+ href="{{$photo}}" />
+
+ <Property xmlns:mk="http://salmon-protocol.org/ns/magic-key"
+ type="http://salmon-protocol.org/ns/magic-key"
+ mk:key_id="1">{{$bigkey}}</Property>
+
+</XRD>
diff --git a/view/tpl/threaded_conversation.tpl b/view/tpl/threaded_conversation.tpl
index e91c49bb1..0f949265c 100644
--- a/view/tpl/threaded_conversation.tpl
+++ b/view/tpl/threaded_conversation.tpl
@@ -1,6 +1,6 @@
-{{ for $threads as $xyz }}
-{{ for $xyz.items as $item }}
-{{ inc $item.template }}{{ endinc }}
+{{ for $threads as $thread }}
+{{ for $thread.items as $thread_item }}
+{{ inc $thread_item.template with $item=$thread_item }}{{ endinc }}
{{ endfor }}
{{ endfor }}
diff --git a/view/tpl/wall_thread.tpl b/view/tpl/wall_thread.tpl
index 0ee9594c8..9a02b2103 100644
--- a/view/tpl/wall_thread.tpl
+++ b/view/tpl/wall_thread.tpl
@@ -107,8 +107,8 @@
<div class="wall-item-outside-wrapper-end $item.indent" ></div>
</div>
-{{ for $item.children as $item }}
- {{ inc $item.template }}{{ endinc }}
+{{ for $item.children as $child }}
+ {{ inc $child.template with $item=$child }}{{ endinc }}
{{ endfor }}
{{ if $item.flatten }}