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');
     }
 }
コード例 #2
0
<?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);
コード例 #3
0
        // если да тосоздаем пустой 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);
// показываем скрин
コード例 #4
0
<?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);
コード例 #5
0
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;
}
コード例 #6
0
<?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);