} echo '<h1>Report user ' . $u->name . '</h1>'; $form = new XhtmlForm(); $form->addHidden('id', $u->id); //XXX ugly hack $form->addTextarea('reason', 'Reason'); $form->addSubmit('Send'); $form->setHandler('handleReportUser'); echo $form->render(); break; case 'photo': // child = file id function handleReportPhoto($p) { ModerationObject::add(MODERATE_PHOTO, $p['id'], $p['reason']); js_redirect('u/photo/show/' . $p['id']); } $f = File::get($this->child); d($f); echo '<h1>Report photo ' . $f->id . '</h1>'; $form = new XhtmlForm(); $form->addHidden('id', $f->id); //XXX ugly hack $form->addTextarea('reason', 'Reason'); $form->addSubmit('Send'); $form->setHandler('handleReportPhoto'); echo $form->render(); break; default: echo 'no such view: ' . $this->owner; }
$fb = Feedback::get($this->child); if (!$fb) { die('Eppp'); } if ($fb->type == USER) { $from = User::get($fb->from); echo '<h2>User feedback from ' . $fb->name . '</h2>'; } echo 'Subject: ' . $fb->subject . '<br/>'; if ($fb->body) { echo 'Message: ' . nl2br($fb->body); } echo '<br/>'; if ($fb->type == USER) { $msg = "In response to your feedback:\n\n" . $fb->body; $frm = new XhtmlForm(); $frm->addHidden('owner', $this->child); $frm->addHidden('to', $fb->from); $frm->addTextarea('msg', 'Reply', $msg); $frm->addSubmit('Send'); $frm->setHandler('fbHandle'); echo $frm->render(); } echo '<br/>'; echo ahref('a/feedback/markhandled/' . $this->child, 'Mark as handled'); break; case 'markhandled': // child = tblFeedback.id Feedback::markHandled($this->child); js_redirect('a/feedback/default'); break;
function PersonalInfoForm(User $o_person) { $this->o_person = $o_person; parent::XhtmlForm(); }
$session->requireSuperAdmin(); switch ($this->owner) { case 'overview': echo '<h1>Blogs overview</h1>'; echo '» ' . ahref('a/blogs/new', 'Write a new blog post'); break; case 'new': function createHandler($p) { $session = SessionHandler::getInstance(); $o = new BlogEntry(); $o->owner = $session->id; $o->subject = trim($p['subject']); $o->body = trim($p['body']); $o->time_created = sql_datetime(time()); $o->time_published = sql_datetime(time()); $o->id = $o->store(); js_redirect('a/blogs/overview'); } echo '<h1>Write a new blog</h1>'; $x = new XhtmlForm(); $x->addInput('subject', 'Subject'); $x->addRichedit('body', 'Body'); $x->addSubmit('Create'); $x->setHandler('createHandler'); echo $x->render(); break; default: echo 'No handler for view ' . $this->owner; }
namespace cd; $session->requireAdmin(); function addUserGroupSubmit($p) { $grp = new UserGroup(); $grp->setName($p['name']); $grp->setInfo($p['info']); $grp->setLevel($p['level']); $grp->save(); redir('a/usergroups'); } $header->setTitle('Admin: Manage user groups'); echo '<h1>Manage user groups</h1>'; echo '<h2>Add new group</h2>'; $form = new XhtmlForm('adm_usergroup'); $form->addInput('name', 'Group name'); $form->addTextarea('info', 'Info'); $form->addDropdown('level', 'Level', getUserLevels()); $form->addSubmit('Add'); $form->setHandler('addUserGroupSubmit'); echo $form->render(); echo '<br/>'; echo '<h2>Existing groups</h2>'; echo '<table>'; echo '<tr><th>Name</th><th>Level</th><th>Info</th><th>Created</th></tr>'; foreach (UserGroup::getAll() as $grp) { echo '<tr>'; echo '<td>' . ahref('a/usergroup/' . $grp->getId(), $grp->getName()) . '</td>'; echo '<td>' . $grp->getLevelDesc() . '</td>'; echo '<td>' . $grp->getInfo() . '</td>';
break; default: throw new \Exception('eh'); } echo '<hr/>'; } break; case 'send': // child = send to user id if (Bookmark::exists(BOOKMARK_USERBLOCK, $session->id, $this->child)) { echo 'User has blocked you from access'; return; } function msgSubmit($p) { Message::send($p['to'], $p['msg']); js_redirect('u/messages/inbox'); } $user = User::get($this->child); echo '<h2>Send a message to ' . $user->name . '</h2>'; $form = new XhtmlForm(); $form->addTextarea('msg', 'Msg'); $form->addHidden('to', $this->child); $form->addSubmit('Send'); $form->setHandler('msgSubmit'); $form->setFocus('msg'); echo $form->render(); break; default: echo 'No handler for view ' . $this->owner; }
$m->microtime = microtime(true); $m->store(); $page->setMimeType('text/plain'); echo 'OK'; break; case 'show': // child = room id $cr = ChatRoom::get($this->child); echo '<h2>Chat in ' . $cr->name . '</h2>'; if ($cr->locked_by) { echo 'The chatroom is locked!'; return; } $div_name = 'chatroom_txt'; $form_id = 'chatfrm'; ChatRoomUpdater::init($this->child, $div_name, $form_id); $css = 'width:500px;' . 'height:300px;' . 'background-color:#eee;' . 'overflow:auto;'; echo '<div id="' . $div_name . '" style="' . $css . '"></div>'; $form = new XhtmlForm(); $form->setId($form_id); $form->addInput('msg', $session->username . ':', '', 445); $form->setFocus('msg'); $form->disableAutocomplete(); echo $form->render(); YuiTooltip::init(); echo UserLink::render(27, "martin") . ' '; echo UserLink::render(32, "kotte"); break; default: echo 'No handler for view ' . $this->owner; }
function OnPageLoad() { echo "<h1>Stoolball matches</h1>"; # Filter controls $filter_box = new XhtmlForm(); $filter_box->SetCssClass('dataFilter'); $filter_box->AddAttribute('method', 'get'); $filter_box->AddControl(new XhtmlElement('p', 'Show me: ', "follow-on large")); $filter_inner = new XhtmlElement('div'); $filter_box->AddControl($filter_inner); $gender = new XhtmlSelect('player', 'Player type'); $gender->SetHideLabel(true); $gender->AddControl(new XhtmlOption("mixed and ladies", '')); $gender->AddControl(new XhtmlOption('mixed', 1)); $gender->AddControl(new XhtmlOption("ladies", 2)); if (isset($_GET['player'])) { $gender->SelectOption($_GET['player']); } $filter_inner->AddControl($gender); $type = new XhtmlSelect('type', 'Match type'); $type->SetHideLabel(true); $type->AddControl(new XhtmlOption('all matches', '')); $type->AddControl(new XhtmlOption('league matches', MatchType::LEAGUE)); $type->AddControl(new XhtmlOption('cup matches', MatchType::CUP)); $type->AddControl(new XhtmlOption('friendlies', MatchType::FRIENDLY)); $type->AddControl(new XhtmlOption('tournaments', MatchType::TOURNAMENT)); $type->AddControl(new XhtmlOption('practices', MatchType::PRACTICE)); if (isset($_GET['type'])) { $type->SelectOption($_GET['type']); } $filter_inner->AddControl($type); $filter_inner->AddControl(' in '); $month = new XhtmlSelect('month', 'Month'); $month->SetHideLabel(true); $month->AddControl(new XhtmlOption('next few matches', '')); foreach ($this->a_months as $i_month => $i_matches) { $opt = new XhtmlOption(Date::MonthAndYear($i_month), $i_month); if (isset($_GET['month']) and $_GET['month'] == $i_month) { $opt->AddAttribute('selected', 'selected'); } $month->AddControl($opt); unset($opt); } $filter_inner->AddControl($month); $update = new XhtmlElement('input'); $update->AddAttribute('type', 'submit'); $update->AddAttribute('value', 'Update'); $filter_inner->AddControl($update); # Content container $container = new XhtmlElement('div', $filter_box, "box"); $content = new XhtmlElement("div", null, "box-content"); $container->AddControl($content); # Display the matches if (count($this->a_matches)) { $list = new MatchListControl($this->a_matches); $content->AddControl($list); } else { $content->AddControl(new XhtmlElement('p', 'Sorry, there are no matches to show you.')); $content->AddControl(new XhtmlElement('p', 'If you know of a match which should be listed, please <a href="/play/manage/website/">add the match to the website</a>.')); } echo $container; }
public function __construct(SiteSettings $settings, AuthenticationManager $authentication_manager) { $this->settings = $settings; $this->authentication_manager = $authentication_manager; parent::XhtmlForm(); }
echo '<a href="' . $session->fb_handle->getLoginUrl() . '">Login with Facebook</a>'; } $header->registerJsFunction('function check_login(frm)' . '{' . 'if (!frm.login_usr.value||!frm.login_pwd.value)' . 'return false;' . 'return true;' . '}'); function loginHandler($p) { $session = SessionHandler::getInstance(); if ($session->id) { dp('HACK user ' . $session->name . ' (' . $session->id . ') tried to login user ' . $p['usr']); return false; } if ($session->login($p['usr'], $p['pwd'])) { $session->showStartPage(); } return true; } $form = new XhtmlForm('login'); $form->cssTable(''); $u_img = new XhtmlComponentImage(); $u_img->src = $page->getRelativeCoreDevUrl() . 'gfx/icon_user.png'; $i = new XhtmlComponentInput(); $i->name = 'usr'; $form->add($i, t('Username'), $u_img); $p_img = new XhtmlComponentImage(); $p_img->src = $page->getRelativeCoreDevUrl() . 'gfx/icon_keys.png'; $i = new XhtmlComponentPassword(); $i->name = 'pwd'; $form->add($i, t('Password'), $p_img); $form->addSubmit('Log in', 'font-weight:bold'); $form->setFocus('usr'); $form->onSubmit('return check_login(this);'); $form->setHandler(__NAMESPACE__ . '\\loginHandler');
$wiki = Wiki::getByName($this->child); echo '<h2>Edit wiki ' . $this->child . '</h2>'; $menu = new XhtmlMenu(); $menu->setCss('wiki_menu'); $menu->add(t('Article'), 'u/wiki/show/' . $this->child); $menu->add(t('Edit'), 'u/wiki/edit/' . $this->child); $menu->add(t('History'), 'u/wiki/history/' . $this->child); echo '<div class="wiki">'; echo $menu->render(); /* if (!$session->isAdmin && !$this->lockerId) { echo "WIKI LOCKED"; return; } */ $form = new XhtmlForm('wiki_edit'); $form->addHidden('wiki_name', $this->child); ///XXXX ugly hack $form->addText('Edit wiki article ' . $this->child); /* if ($this->lockerId) echo '<div class="wiki_locked">This article is currently locked from editing.</div>'; */ $rows = 8 + substr_count($wiki->text, "\n"); if ($rows > 36) { $rows = 36; } $form->addRichedit('text', '', $wiki->text); /* if ($session->isAdmin) { if ($this->lockerId) {
echo '<h2>Group membership</h2>'; echo 'This user is member of the following groups:<br/>'; foreach (UserGroupHandler::getGroups($user->id) as $g) { echo '<a href="' . relurl_add(array('rm_grp' => $g->getId())) . '">' . coreButton('Delete') . '</a> '; echo ahref('a/usergroup/' . $g->getId(), $g->getName()) . '<br/>'; } echo '<br/>'; echo xhtmlForm('grp'); $x = new XhtmlComponentDropdown(); $x->name = 'grp_id'; $x->setOptions(UserGroup::getIndexedList()); echo $x->render() . ' '; echo xhtmlSubmit('Add'); echo xhtmlFormClose() . '<br/><br/>'; echo '<h2>Password</h2>'; $form = new XhtmlForm('pwd'); $form->disableAutocomplete(); $form->addPassword('change_pwd', 'Change password'); $form->addSubmit('Change'); echo $form->render() . '<br/><br/>'; echo '<h2>User settings</h2>'; $settings = UserSetting::getAll($user->id); echo xhtmlForm('edit_setting'); echo '<table>'; echo '<tr><th>Name</th><th>Value</th><th>Delete</th></tr>'; //XXX use editable YuiDataTable foreach ($settings as $set) { echo '<tr>'; echo '<td>' . xhtmlInput('setting_name_' . $set['id'], $set['name']) . '</td>'; echo '<td>' . xhtmlInput('setting_val_' . $set['id'], $set['value']) . '</td>'; echo '<td><a href="' . relurl_add(array('remove_setting' => $set['name'])) . '">Remove</a></td>';
foreach ($list as $row) { echo ahref('queue/status/' . $row['fileId'], 'Details'); $uploader = new User($row['uploaderId']); echo ', mime=' . $row['fileMime'] . ' created ' . $row['timeUploaded'] . ' by ' . $uploader->render() . '<br/>'; } break; case 'new': function uploadSubmit($p) { // XhtmlForm:s upload handler har redan processat filen här $eventId = TaskQueue::addTask(TASK_UPLOAD, $p['f1']); if (!$eventId) { echo 'file upload handling failed'; return false; } echo '<div class="okay">Your file has been uploaded successfully!</div><br/>'; echo ahref('queue/show/' . $eventId, 'Click here') . ' to perform further actions on this file.'; return true; } echo 'Max allowed upload size is ' . ini_get('upload_max_filesize') . '<br/>'; echo 'Max allowed POST size is ' . ini_get('post_max_size') . '<br/>'; echo '<br/>'; $form = new XhtmlForm('ul_pdf'); $form->addFile('f1', 'Fil', USER); $form->addSubmit('Upload'); $form->setHandler('uploadSubmit'); echo $form->render(); break; default: echo 'No handler for view ' . $this->view; }
//TODO: ability to remove a empty usergroup namespace cd; $session->requireAdmin(); $grp = new UserGroup($this->owner); $header->setTitle('Admin: Manage user group: ' . $grp->getName()); echo '<h1>Manage user group: ' . $grp->getName() . '</h1>'; echo 'Created at ' . sql_datetime($grp->getTimeCreated()) . ' by ' . $grp->getCreatorName() . '<br/><br/>'; function saveUserGroupSubmit($p) { $grp = new UserGroup($p['g_id']); $grp->setName($p['name']); $grp->setInfo($p['info']); $grp->setLevel($p['level']); $grp->save(); return true; } $form = new XhtmlForm('adm_usergroup'); $form->addHidden('g_id', $grp->getId()); //XXXX hax $form->addInput('name', 'Group name', $grp->getName()); $form->addTextarea('info', 'Info', $grp->getInfo()); $form->addDropdown('level', 'Level', getUserLevels(), $grp->getLevel()); $form->addSubmit('Save'); $form->setHandler('saveUserGroupSubmit'); echo $form->render(); echo '<br/><br/>'; echo '<h1>Group members</h1>'; foreach ($grp->getMembers() as $user) { echo ahref('a/user/' . $user->id, $user->name) . '<br/>'; }
case 'edit': // child = tblFAQ.id function editHandler($p) { $session = SessionHandler::getInstance(); $o = FaqItem::get($p['id']); $o->question = $p['q']; $o->answer = $p['a']; $o->creator = $session->id; $o->time_created = sql_datetime(time()); $o->store(); js_redirect('a/faq'); } echo '<h2>Edit FAQ</h2>'; $faq = FaqItem::get($this->child); $x = new XhtmlForm(); $x->addHidden('id', $this->child); $x->addInput('q', 'Question', $faq->question); $x->addTextarea('a', 'Answer', $faq->answer); $x->addSubmit('Save'); $x->setHandler(__NAMESPACE__ . '\\editHandler'); echo $x->render(); echo '<br/>'; echo '» ' . ahref('a/faq/delete/' . $this->child, 'Delete FAQ entry'); break; case 'delete': // child = tblFAQ.id if (confirmed('Are you sure you want to delete this FAQ entry?')) { FaqItem::remove($this->child); js_redirect('a/faq'); }
case 'add': // From here you ask the server to fetch a remote media for later processing function uploadSubmit($p) { if (!is_url($p['url'])) { $error = ErrorHandler::getInstance(); $error->add('Not an url'); return false; } $eventId = TaskQueue::addTask(TASK_FETCH, $p['url']); echo '<div class="okay">URL to process has been enqueued.</div><br/>'; echo ahref('queue/show/' . $eventId, 'Click here') . ' to perform further actions on this file.'; } $url = 'http://processtest.x/kaos.mp3'; echo 'Enter resource URL:<br/>'; $form = new XhtmlForm('ul_pdf'); $form->addInput('url', 'URL', $url, 60); $form->addSubmit('Add'); $form->setHandler('uploadSubmit'); echo $form->render(); break; case 'overview': //FIXME show failed & in progress aswell $list = TaskQueue::getList(0, isset($_GET['completed']) ? ORDER_COMPLETED : ORDER_NEW); //d($list);die; if (!empty($list)) { foreach ($list as $row) { echo '<div class="item">'; echo '<h2>#' . $row['entryId'] . ': '; switch ($row['orderType']) { /*
protected function OnPreRender() { require_once 'xhtml/forms/textbox.class.php'; parent::AddControl('<div>'); # div inside form required by XHTML # persist params as requested foreach ($this->a_persisted_params as $s_param) { $s_param = trim($s_param); $a_fields = $this->IsPostback() ? $_POST : $_GET; if (isset($a_fields[$s_param])) { $o_param_box = new TextBox($s_param); $o_param_box->SetText($a_fields[$s_param]); $o_param_box->SetMode(TextBoxMode::Hidden()); parent::AddControl($o_param_box); unset($o_param_box); } } # add default buttons if ($this->b_show_buttons_at_top) { parent::AddControl($this->CreateDefaultButtons()); } # display validator errors if (!$this->IsValid() and $this->GetShowValidationErrors()) { require_once 'data/validation/validation-summary.class.php'; $a_controls = array($this); parent::AddControl(new ValidationSummary($a_controls)); } # Adjust headings if ($this->b_show_sections) { foreach ($this->a_edit_controls as $o_control) { $o_control->SetIsInSection(true); } } else { foreach ($this->a_section_headings as $o_heading) { $i_key = array_search($o_heading, $this->a_controls_to_render, true); if (!($i_key === false)) { if (array_key_exists($i_key, $this->a_controls_to_render)) { unset($this->a_controls_to_render[$i_key]); } } } } # Add the edit controls themselves, one at a time so that they're streamed foreach ($this->a_controls_to_render as $control) { parent::AddControl($control); } # add ids $a_items = $this->GetDataObjects(); $s_item_ids = ''; foreach ($a_items as $o_data_object) { if (is_object($o_data_object) and method_exists($o_data_object, 'GetId')) { if ($s_item_ids) { $s_item_ids .= ';'; } $s_item_ids .= $o_data_object->GetId(); } } if ($s_item_ids) { $o_id_box = new TextBox('items', $s_item_ids); $o_id_box->SetMode(TextBoxMode::Hidden()); parent::AddControl($o_id_box); } # add default buttons parent::AddControl($this->CreateDefaultButtons()); parent::AddControl('</div>'); # div inside form required by XHTML }
/** * Utility to decode base64 strings */ namespace cd; $session->requireSuperAdmin(); if (!$this->owner) { $this->owner = 'default'; } switch ($this->owner) { case 'default': function onSubmit($p) { $error = ErrorHandler::getInstance(); $res = base64_decode($p['data'], true); if ($res === false) { $error->add('Input is not base64 encoded'); return false; } echo dh($res); } $form = new XhtmlForm(); $form->addTextarea('data'); $form->setFocus('data'); $form->addSubmit('Analyze'); $form->setHandler('onSubmit'); echo $form->render(); break; default: throw new \Exception('no such view: ' . $this->owner); }
} else { $pollId = PollItem::add(SITE, 0, $p['poll_q'], $p['poll_dur'], $p['poll_start']); } for ($i = 1; $i <= 8; $i++) { if (empty($p['poll_a' . $i])) { continue; } $item = new CategoryItem(POLL); $item->owner = $pollId; $item->title = $p['poll_a' . $i]; $item->store(); } js_redirect('a/polls/list'); } echo '<h2>Add new poll</h2>'; $frm = new XhtmlForm(); $frm->addInput('poll_q', 'Question'); // echo '<div id="poll_period_selector">'; $dur = array('1d' => '1 day', '1w' => '1 week', '1m' => '1 month'); $frm->addDropdown('poll_dur', 'Duration', $dur, '1w'); $start = array('thismonday' => 'monday this week', 'nextmonday' => 'monday next week', 'nextfree' => 'next free time'); $frm->addDropdown('poll_start', 'Starting', $start, 'nextmonday'); // echo '<a href="#" onclick="hide_el(\'poll_period_selector\');show_el(\'poll_period_manual\')">Enter dates manually</a>'; // echo '</div>'; // echo '<div id="poll_period_manual" style="display: none;">'; // echo 'Start time: '.xhtmlInput('poll_start_man').' (format YYYY-MM-DD HH:MM)<br/>'; // echo 'End time: '.xhtmlInput('poll_end_man').'<br/>'; // echo '<a href="#" onclick="hide_el(\'poll_period_manual\');show_el(\'poll_period_selector\')">Use dropdown menus instead</a>'; // echo '</div>'; echo '<br/><br/>'; for ($i = 1; $i <= 8; $i++) {
/** * Gets the XHTML representation of the element's closing tag * * @return string */ protected function GetCloseTagXhtml() { # add internal buttons at the last possible stage before closing the form, # to ensure that all child controls have a chance to register their internal buttons $s_xhtml = $this->b_render_base_element ? parent::GetCloseTagXhtml() : ''; if (count($this->a_internal_buttons)) { $this->a_internal_buttons = array_unique($this->a_internal_buttons); $o_internal = new TextBox($this->GetNamingPrefix() . 'InternalButtons', implode('; ', $this->a_internal_buttons)); $o_internal->SetMode(TextBoxMode::Hidden()); $s_xhtml = '<div>' . $o_internal->__toString() . '</div>' . $s_xhtml; } return $s_xhtml; }
$form->addSubmit('Save'); $form->setHandler('handleEditPassword'); echo $form->render(); break; case 'status': function handleEditStatus($p) { $session = SessionHandler::getInstance(); if (!$session->id) { return; } PersonalStatus::setStatus($session->id, $p['status']); js_redirect('u/profile'); } echo '<h1>Change status</h1>'; $form = new XhtmlForm(); $form->addInput('status', ''); $form->addSubmit('Save'); $form->setHandler('handleEditStatus'); $form->setFocus('status'); echo $form->render(); break; break; default: echo 'no such view: ' . $view; } ?> <?php
/** * Creates a new StatisticsFilterControl */ public function __construct() { parent::XhtmlForm(); $this->AddAttribute("method", "get"); }
break; case 'remove': if (confirmed('Are you sure you want to remove this chatroom?')) { ChatRoom::remove($this->child); js_redirect('a/chatroom/list'); } break; case 'empty': if (confirmed('Are you sure you want to remove all messages from this chatroom?')) { ChatMessage::deleteByRoom($this->child); js_redirect('a/chatroom/list'); } break; case 'new': function createHandler($p) { $o = new ChatRoom(); $o->name = trim($p['name']); $o->id = $o->store(); js_redirect('a/chatroom/list'); } echo '<h2>Create new chatroom</h2>'; $x = new XhtmlForm(); $x->addInput('name', 'Name'); $x->addSubmit('Create'); $x->setHandler('createHandler'); echo $x->render(); break; default: echo 'No handler for view ' . $this->owner; }
die('XXX gb only for logged in users'); } $user_id = $this->owner; if (!$this->owner) { $user_id = $session->id; } $user = User::get($user_id); if (!$user) { die('ECK'); } if (Bookmark::exists(BOOKMARK_USERBLOCK, $session->id, $user_id)) { echo 'User has blocked you from access'; return; } echo '<h1>Guestbook for ' . $user->name . '</h1>'; $form = new XhtmlForm('msg'); $form->addHidden('to', $this->owner); $form->addTextarea('body', 'Body'); $form->addSubmit('Send'); $form->setFocus('body'); $form->onSubmit('return check_gb(this);'); $form->setHandler('gbHandler'); $form->handle(); // to get latest added entry in the following query $list = Guestbook::getEntries($user_id); $dt = new YuiDatatable(); $dt->addColumn('creator', 'Written by'); /// XXXX show username, show link to user page $dt->addColumn('time_created', 'When'); $dt->addColumn('body', 'Msg'); $dt->setSortOrder('time_created', 'desc');
<?php namespace cd; switch ($this->owner) { case 'user': function handleSearch($p) { $list = UserList::getUsers($p['q']); echo '<h2>Showing users matching <u>' . $p['q'] . '</u>'; echo ' (' . count($list) . ' hits)</h2>'; $dt = new YuiDatatable(); $dt->addColumn('id', 'Username', 'link', 'u/profile/', 'name'); $dt->addColumn('time_last_active', 'Last active'); $dt->setDataSource($list); echo $dt->render(); } $form = new XhtmlForm(); $form->addInput('q', 'Username search'); $form->setFocus('q'); $form->addSubmit('Search'); $form->setHandler('handleSearch'); echo $form->render(); echo '<br/>'; echo '» ' . ahref('u/users/online', 'Show users online') . '<br/>'; echo '» ' . ahref('u/users/newest', 'Show new members') . '<br/>'; break; default: throw new \Exception('no such view: ' . $this->owner); }
<?php namespace cd; function fbHandler($p) { $session = SessionHandler::getInstance(); $o = new Feedback(); $o->type = USER; $o->subject = $p['subj']; $o->body = $p['body']; $o->from = $session->id; $o->time_created = sql_datetime(time()); $o->store(); js_redirect(''); // jump to start page } echo '<h2>Send us feedback</h2>'; $x = new XhtmlForm(); $x->addInput('subj', 'Subject'); $x->addTextarea('body', 'Body'); $x->addSubmit('Send'); $x->setHandler('fbHandler'); echo $x->render();
for ($i = 1; $i < 6; $i++) { if (!empty($p['avatar_' . $i])) { if ($p['avatar_' . $i]['error'] == UPLOAD_ERR_NO_FILE) { continue; } $fileId = File::importImage(SITE, $p['avatar_' . $i]); UserDataFieldOption::set($f->id, 'avatar_' . $i, $fileId); } } break; } js_redirect('a/userdata/list'); } echo '<h1>Edit userdata field</h1>'; $field = UserDataField::get($this->child); $form = new XhtmlForm(); $form->addHidden('id', $field->id); /// XXX hack! $form->addInput('name', 'Name', $field->name); $form->addInput('label', 'Label', $field->label); $form->addDropdown('type', 'Type', UserDataField::getTypes(), $field->type); switch ($field->type) { case UserDataField::RADIO: for ($i = 1; $i < 6; $i++) { $opt = 'opt_' . $i; $val = UserDataFieldOption::get($field->id, $opt); $form->addInput($opt, 'Option ' . $i, $val); } break; case UserDataField::AVATAR: for ($i = 1; $i < 6; $i++) {
$c->private = 0; $c->time_created = sql_datetime(time()); $c->owner = $p['owner']; $c->creator = $session->id; $c->creator_ip = client_ip(); $c->store(); redir($_SERVER['REQUEST_URI']); } $list = Comment::getByTypeAndOwner($this->type, $this->owner); foreach ($list as $c) { $user = User::get($c->creator); if ($user) { echo $user->name . ' wrote: '; } else { echo 'user id ' . $c->creator . ' wrote: '; } echo nl2br($c->msg) . '<br/>'; echo '<span title="' . ago($c->time_created) . '">'; echo sql_datetime($c->time_created); echo '</span>'; echo '<hr/>'; } if ($session->id) { $form = new XhtmlForm('addcomment'); $form->addHidden('type', $this->type); $form->addHidden('owner', $this->owner); $form->addRichedit('comment', t('Write a comment'), '', 300, 80); $form->addSubmit('Save'); $form->setHandler('handleSubmit'); echo $form->render(); }
case 'new': $session->requireLoggedIn(); // create new photo album echo '<h1>Create a new photo album</h1>'; function handleNew($p) { $session = SessionHandler::getInstance(); $o = new PhotoAlbum(); $o->owner = $session->id; $o->name = $p['name']; $o->time_created = sql_datetime(time()); if ($session->isSuperAdmin && $p['system']) { $o->owner = 0; } // create a system wide album $o->id = $o->store(); js_redirect('u/album/show/' . $session->id . '/' . $o->id); } $form = new XhtmlForm(); $form->addInput('name', 'Name'); $form->setFocus('name'); if ($session->isSuperAdmin) { $form->addCheckbox('system', 'System wide album? (SUPERADMIN)'); } $form->addSubmit('Save'); $form->setHandler('handleNew'); echo $form->render(); break; default: throw new \Exception('no such view: ' . $this->owner); }
namespace cd; $session->requireSuperAdmin(); switch ($this->owner) { case 'version': echo "<h1>GeoIP database versions</h1>"; foreach (GeoIp::getDatabaseVersions() as $d) { echo '<h2>' . $d['name'] . ' ' . $d['version'] . '</h2>'; echo 'Date: ' . $d['date'] . ' (' . ago($d['date']) . ')<br/>'; echo $d['file'] . '<br/>'; echo '<br/>'; } echo '» ' . ahref('a/geoip/query', 'Query GeoIP database'); break; case 'query': function queryHandler($p) { echo '<h2>Result for ' . $p['ip'] . '</h2>'; d(GeoIP::getRecord($p['ip'])); echo 'Time zone: ' . GeoIP::getTimezone($p['ip']) . '<br/>'; } echo '<h1>Query GeoIP database</h1>'; $x = new XhtmlForm(); $x->addInput('ip', 'IP'); $x->addSubmit('Lookup'); $x->setHandler('queryHandler'); echo $x->render(); break; default: echo 'No handler for view ' . $this->owner; }