. * * @category GNUSocial * @package StatusNet * @author Shashi Gowda * @copyright 2009, 2010, StatusNet, Inc. * @copyright 2010, Free Software Foundation, Inc. * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html AGPL 3.0 * @link http://daisycha.in */ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } require_once INSTALLDIR.'/lib/noticeform.php'; class SocialObjectForm extends NoticeForm { function id() { return 'form_'.$this->out->slug; } function formClass() { return 'form_notice form_'.$this->out->slug; } function action() { return common_local_url('new'.$this->out->slug); } function formLegend() { $this->out->element('legend', null, _('Send a notice')); } function formData() { if (Event::handle('StartShowNoticeFormData', array($this))) { $this->showFormElements(); $this->showAttachmentElements(); $this->showReplyToElements(); $this->showReplyToElements(); Event::handle('EndShowNoticeFormData', array($this)); } } function formActions() { $this->out->element('input', array('id' => 'notice_action-submit', 'class' => 'submit', 'name' => 'status_submit', 'type' => 'submit', 'value' => _m('Send button for sending notice', 'Send'))); } function showAttachmentElements() { if (common_config('attachments', 'uploads')) { $this->out->element('label', array('for' => 'notice_data-attach'),_('Attach')); $this->out->element('input', array('id' => 'notice_data-attach', 'type' => 'file', 'name' => 'attach', 'title' => _('Attach a file'))); $this->out->hidden('MAX_FILE_SIZE', common_config('attachments', 'file_quota')); } } function showReplyToElements() { if ($this->action) { $this->out->hidden('notice_return-to', $this->action, 'returnto'); } $this->out->hidden('notice_in-reply-to', $this->inreplyto, 'inreplyto'); } function showLocationElements() { if ($this->user->shareLocation()) { $this->out->hidden('notice_data-lat', empty($this->lat) ? (empty($this->profile->lat) ? null : $this->profile->lat) : $this->lat, 'lat'); $this->out->hidden('notice_data-lon', empty($this->lon) ? (empty($this->profile->lon) ? null : $this->profile->lon) : $this->lon, 'lon'); $this->out->hidden('notice_data-location_id', empty($this->location_id) ? (empty($this->profile->location_id) ? null : $this->profile->location_id) : $this->location_id, 'location_id'); $this->out->hidden('notice_data-location_ns', empty($this->location_ns) ? (empty($this->profile->location_ns) ? null : $this->profile->location_ns) : $this->location_ns, 'location_ns'); $this->out->elementStart('div', array('id' => 'notice_data-geo_wrap', 'title' => common_local_url('geocode'))); $this->out->checkbox('notice_data-geo', _('Share my location'), true); $this->out->elementEnd('div'); $this->out->inlineScript(' var NoticeDataGeo_text = {'. 'ShareDisable: "'._('Do not share my location').'",'. 'ErrorTimeout: "'._('Sorry, retrieving your geo location is taking longer than expected, please try again later').'"'. '}'); } } # you'll mainly need to override this function showFormElements() { $this->out->element('label', array('for' => 'notice_data-text'), sprintf(_('What\'s up, %s?'), $this->user->nickname)); // XXX: vary by defined max size $this->out->element('textarea', array('id' => 'notice_data-text', 'cols' => 35, 'rows' => 4, 'name' => 'status_textarea'), ($this->content) ? $this->content : ''); $contentLimit = Notice::maxContent(); if ($contentLimit > 0) { $this->out->elementStart('dl', 'form_note'); $this->out->element('dt', null, _('Available characters')); $this->out->element('dd', array('id' => 'notice_text-count'), $contentLimit); $this->out->elementEnd('dl'); } } }