function common_element_end($tag) {
global $xw;
- $xw->endElement();
+ # TODO: switch based on $tag
+ $xw->fullEndElement();
}
function common_element($tag, $attrs=NULL, $content=NULL) {
common_element_start($tag, $attrs);
- if ($content) {
- global $xw;
- $xw->text($content);
- }
- common_element_end($tag);
+ global $xw;
+ $xw->text($content);
+ common_element_end($tag);
}
function common_start_xml($doc=NULL, $public=NULL, $system=NULL) {
common_element('script', array('type' => 'text/javascript',
'src' => common_path('js/jquery.min.js')),
' ');
+ common_element('script', array('type' => 'text/javascript',
+ 'src' => common_path('js/util.js')),
+ ' ');
if ($callable) {
if ($data) {
common_element_end('div'); # content div
common_foot_menu();
common_element_start('div', array('id' => 'footer'));
- common_element_start('p', 'laconica');
- common_text(_t('This site is running the '));
- common_element('a', array('class' => 'software',
- href => 'http://laconi.ca/'),
- 'Laconica');
- common_text(_t('microblogging tool, version ' . LACONICA_VERSION . ', available under the '));
- common_element('a', array(href => 'http://www.fsf.org/licensing/licenses/agpl-3.0.html'),
- 'GNU Affero General Public License');
- common_text(_t('.'));
- common_element_end('p');
+ common_element_start('div', 'laconica');
+ if (common_config('site', 'broughtby')) {
+ $instr = _t('**%%site.name%%** is a microblogging service brought to you by [%%site.broughtby%%](%%site.broughtbyurl%%). ');
+ } else {
+ $instr = _t('**%%site.name%%** is a microblogging service. ');
+ }
+ $instr .= _t('It runs the [Laconica](http://laconi.ca/) ' .
+ 'microblogging software, version ' . LACONICA_VERSION . ', ' .
+ 'available under the ' .
+ '[GNU Affero General Public License]' .
+ '(http://www.fsf.org/licensing/licenses/agpl-3.0.html).');
+ $output = common_markup_to_html($instr);
+ common_raw($output);
+ common_element_end('div');
common_element('img', array('id' => 'cc',
'src' => $config['license']['image'],
'alt' => $config['license']['title']));
_t('Privacy'));
common_menu_item(common_local_url('doc', array('title' => 'source')),
_t('Source'));
+ common_menu_item(common_local_url('doc', array('title' => 'contact')),
+ _t('Contact'));
common_element_end('ul');
}
'cols' => 40,
'name' => $id,
'id' => $id),
- ($content) ? $content : ' ');
+ ($content) ? $content : '');
if ($instructions) {
common_element('span', 'input_instructions', $instructions);
}
case 'subscribe':
case 'unsubscribe':
return common_path('main/'.$action);
+ case 'remotesubscribe':
+ if ($args && $args['nickname']) {
+ return common_path('main/remote?nickname=' . $args['nickname']);
+ } else {
+ return common_path('main/remote');
+ }
case 'openidlogin':
return common_path('main/openid');
case 'avatar':
$user = common_current_user();
assert(!is_null($user));
common_element_start('form', array('id' => 'status_form',
- 'method' => 'POST',
+ 'method' => 'post',
'action' => common_local_url('newnotice')));
common_element_start('p');
- common_element('label', array('for' => 'status_update',
+ common_element('label', array('for' => 'status_textarea',
'id' => 'status_label'),
_t('What\'s up, ').$user->nickname.'?');
+ common_element('span', array('id' => 'counter', 'class' => 'counter'), '140');
common_element('textarea', array('id' => 'status_textarea',
+ 'cols' => 60,
+ 'rows' => 3,
'name' => 'status_textarea'),
- ($content) ? $content : ' ');
+ ($content) ? $content : '');
if ($action) {
common_hidden('returnto', $action);
}
}
return $code;
}
+
+# convert markup to HTML
+
+function common_markup_to_html($c) {
+ $c = preg_replace('/%%action.(\w+)%%/e', "common_local_url('\\1')", $c);
+ $c = preg_replace('/%%doc.(\w+)%%/e', "common_local_url('doc', array('title'=>'\\1'))", $c);
+ $c = preg_replace('/%%(\w+).(\w+)%%/e', 'common_config(\'\\1\', \'\\2\')', $c);
+ return Markdown($c);
+}