protected function applyLinkToNode($xml, $node, &$data) { switch ($linktype = $this->getAttribute('linktype')) { case 'login': $node->setAttribute('data-linktype', 'login'); $node->setAttribute('data-href', $this->getAttribute('href')); break; case 'register': $node->setAttribute('data-linktype', 'register'); $node->setAttribute('data-href', $this->getAttribute('href')); break; case 'jscode': $this->showArrow = false; $node->setAttribute('data-linktype', 'jscode'); $node->setAttribute('data-href', $this->getIdType() . (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->getId()); break; case 'items': case 'gallery': case 'map': if ($this->jsonp || $this->getAttribute('xmlsrc')) { $node->setAttribute('data-linktype', 'remote'); $node->setAttribute('data-href', $this->prepareURL($this->jsonp)); } else { if ($this->screen) { $node->setAttribute('data-linktype', 'screen'); $this->screen->getHTMLNode($xml, $data, true); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->screen->getId()); if (!empty($this->elementId)) { $node->setAttribute('data-element', $this->elementId); } //$s->setAttribute('data-parent-type', 'item'); //$s->setAttribute('data-parent', $node->getAttribute('id')); } } break; case 'tab': if (!empty($this->tab)) { $node->setAttribute('data-linktype', $linktype); $this->tab->getHTMLNode($xml, $data, true); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->tab->getId()); break; } else { $node->setAttribute('data-linktype', $linktype); $node->setAttribute('data-href', $this->getAttribute('href')); break; } case 'refresh': $node->setAttribute('data-linktype', 'refresh'); $node->setAttribute('data-refreshtype', $this->getAttribute('refreshtype') ? 'any' : 'button'); break; case 'app': if (!empty($this->app)) { $node->setAttribute('data-linktype', $linktype); $this->app->getHTMLNode($xml, $data, true); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->app->getId()); break; } case 'screen': $node->setAttribute('data-linktype', $linktype); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->getAttribute('href')); break; case 'email': if ($data['settings']['emailPreview']) { $screen = new AppBuilderAPIListScreen('Email'); $screen->setId('email' . $this->getId()); $screen->setUpdated(false); $screen->setEditable(false); $screen->setBack(isset($data['settings']['currentscreen']) ? $data['settings']['currentscreen'] : true); $screen->setFetchId($data['settings']['fetchscreen'] ? $data['settings']['fetchscreen']->getId() : null); $screen->addChild(new AppBuilderAPIInputItem('email_to', $this->getAttribute('emailto'), 'To')); $screen->addChild(new AppBuilderAPIInputItem('email_subject', $this->getAttribute('emailsubject'), 'Subject')); $screen->addChild(new AppBuilderAPITextAreaItem('email_body', $this->getAttribute('emailbody'), 'Message')); $send = new AppBuilderAPIButtonItem('Send'); $send->setWebLink('mailto:{email_to}?subject={email_subject}&body={email_body}', 'external'); $screen->addChild($send); $screen->getHTMLNode($xml, $data, true); $node->setAttribute('data-linktype', 'screen'); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $screen->getId()); } else { $node->setAttribute('data-linktype', 'web'); $node->setAttribute('data-href', 'mailto:' . $this->getAttribute('emailto') . '?subject=' . urlencode($this->getAttribute('emailsubject')) . '&body=' . urlencode($this->getAttribute('emailbody'))); $node->setAttribute('data-weblinktype', 'external'); } break; case 'phone': if ($data['settings']['telPreview']) { $screen = new AppBuilderAPIListScreen('Phone'); $screen->setId('phone' . $this->getId()); $screen->setUpdated(false); $screen->setScrolling(false); $screen->setEditable(false); $screen->setBack(isset($data['settings']['currentscreen']) ? $data['settings']['currentscreen'] : true); $screen->setFetchId($data['settings']['fetchscreen'] ? (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $data['settings']['fetchscreen']->getId() : null); $screen->addClass('phone-screen'); $screen->setHeader(false); $screen->setTabs(false); $top = new AppBuilderAPILinkItem($this->getAttribute('href')); $top->addClass('top'); $screen->addChild($top); $end = new AppBuilderAPILinkItem('End'); $end->addClass('bottom'); $end->setBackLink(); $screen->addChild($end); $screen->getHTMLNode($xml, $data, true); $node->setAttribute('data-linktype', 'screen'); $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $screen->getId()); } else { $node->setAttribute('data-linktype', 'web'); $node->setAttribute('data-href', 'tel:' . $this->getAttribute('href')); $node->setAttribute('data-weblinktype', 'confirm'); $node->setAttribute('data-confirm-message', 'Click to make a call to ' . $this->getAttribute('href')); $node->setAttribute('data-okbtn', 'Call'); } break; //file //file case 'pdf': case 'excel': case 'doc': case 'ppt': case 'mp4': case 'mp3': case 'wav': case 'video': $node->setAttribute('data-linktype', 'file'); $node->setAttribute('data-href', $this->getAttribute('href')); if ($this->filename) { $node->setAttribute('data-filename', $this->filename); } break; case 'web': case 'youtube': case 'vimeo': case 'twitter': case 'facebook': $node->setAttribute('data-linktype', $linktype); $node->setAttribute('data-href', $this->getAttribute('href')); if ($this->weblinktype) { $node->setAttribute('data-weblinktype', $this->weblinktype); } break; case 'back': $node->setAttribute('data-linktype', $linktype); if ($this->backlink) { $node->setAttribute('data-href', (isset($data['settings']['prefix']) && $this->prefixed ? $data['settings']['prefix'] : '') . $this->backlink); } break; case 'bbm': $node->setAttribute('data-linktype', 'bbm'); break; case 'toggle': case 'app': default: // } if ($node->hasAttribute('data-linktype')) { $xml->addClass($node, 'link'); if ($this->showArrow) { $node->appendChild($xml->createElement('div', 'link-arrow')); } else { $xml->addClass($node, 'link-no-arrow'); } $node->setAttribute('x-blackberry-focusable', 'true'); } }
<?php require_once 'appshed-extension-api/api/api.php'; require_once 'functions.php'; if (empty($_GET['username']) || empty($_GET['password'])) { $apiScreen = new AppBuilderAPIListScreen("Incorrect Login"); echo AppBuilderAPI::getScreenResponse($apiScreen); exit; } $file = fetchURL('http://community.computingatschool.org.uk/forums.json', null, false, array('username' => $_GET['username'], 'password' => $_GET['password'])); if (!$file) { $apiScreen = new AppBuilderAPIListScreen("Incorrect Login"); echo AppBuilderAPI::getScreenResponse($apiScreen); exit; } $data = json_decode($file, true); $apiScreen = new AppBuilderAPIListScreen("Discussion Forums"); $apiScreen->setBack(false); $base = base(); foreach ($data['normal'] as $forum) { $apiItem = new AppBuilderAPILinkItem($forum['name'], "http://images-resized.appshed.com/10148plain_x2.png"); $apiItem->setImageSize(array('width' => 40, 'height' => 40)); $query = http_build_query(array('url' => $forum['json_url'], 'name' => $forum['name'], 'username' => $_GET['username'], 'password' => $_GET['password'])); $apiItem->setRemoteLink("{$base}/forum.php?{$query}"); $apiScreen->addChild($apiItem); } echo AppBuilderAPI::getScreenResponse($apiScreen);
// если да тосоздаем пустой stdClass $comment->name = @$_GET['name']; // добавляем имя $comment->email = @$_GET['email']; // добавляем email $comment->text = @$_GET['text']; // добавляем текст $comment->date = date('d-m-Y H:i:s'); // добавляем дату array_unshift($coments, $comment); // добавляем запись в начало масива file_put_contents('data.txt', json_encode($coments)); // сохраняем данные } foreach ($coments as $comment) { // бежим по масиву записей $screen->addChild($header = new AppBuilderAPIPlainItem($comment->name, $comment->email)); // создаем AppBuilderAPIPlainItem который будет // заглавием коментария и сразу вставляем в скрин $header->setHrAfter(false); // отключаем линию после заголавия $screen->addChild(new AppBuilderAPIFormattedItem($comment->text . '<br>' . $comment->date)); // добавляем AppBuilderAPIFormattedItem для текста сообщения } $screen->addChild($add = new AppBuilderAPILinkItem('Добавить сообщение')); // добавляем AppBuilderAPILinkItem для перехода на добавление комента $add->setRemoteLink('http://dev.appshed.net/examples/forms.php?addcomment=true'); // устанавливаем RemoteLink } echo AppBuilderAPI::getScreenResponse($screen); // показываем скрин
<?php include '../api/api.php'; $screen = new AppBuilderAPIListScreen('Home'); $screen->addChild($link = new AppBuilderAPILinkItem('screen3')); $link->setScreenLink($screen2 = new AppBuilderAPIListScreen('Home')); $screen2->addChild($link2 = new AppBuilderAPILinkItem('link 2 ')); //$link2->setRemoteLink('http://vitaliy.ekreative.com/appshed-git/site/components/com_appbuilder/libraries/appshed-extension-api/examples/example-links.php'); echo AppBuilderAPI::getScreenResponse($screen);
function getTopicScreen($topic) { $apiScreen = new AppBuilderAPIListScreen($topic['name']); $apiItem = new AppBuilderAPITextItem($topic['name']); $apiItem->setBold(true); $apiItem->setSize(18); $apiItem->setAlign("center"); $apiItem->setPaddingTop(20); $apiItem->setPaddingBottom(20); $apiItem->setPaddingLeft(20); $apiItem->setPaddingRight(20); $apiScreen->addChild($apiItem); foreach ($topic['posts'] as $post) { $apiItem = new AppBuilderAPIThumbItem($post['user']['name'], $post['user']['roles'], "http://community.computingatschool.org.uk{$post['user']['picture']}"); $apiItem->setImageSize(array('width' => 32, 'height' => 24)); $apiItem->setHrAfter(false); $apiScreen->addChild($apiItem); $noTagsBody = strip_tags($post['body']); $shortNoTagsBody = substr($noTagsBody, 0, 200); $shortend = strlen($noTagsBody) > 200; $apiItem = new AppBuilderAPITextItem($shortNoTagsBody); if ($shortend) { $apiItem->setHrAfter(false); } $apiScreen->addChild($apiItem); if ($shortend) { $apiItem = new AppBuilderAPILinkItem("... more"); $apiItem->setScreenLink(getMoreScreen($topic['name'], $post['body'])); $apiItem->setColor("8,74,255"); $apiItem->setAlign("right"); $apiScreen->addChild($apiItem); } } return $apiScreen; }
<?php include '../api/api.php'; $screen = new AppBuilderAPIListScreen('Home'); $screen->addChild($link = new AppBuilderAPILinkItem('link')); $link->setRemoteLink('http://vitaliy.ekreative.com/appshed-git/site/components/com_appbuilder/libraries/appshed-extension-api/examples/example-links2.php'); echo AppBuilderAPI::getScreenResponse($screen);