Пример #1
0
 public function success($response)
 {
     $pq = PhpQuery::newDocument($response);
     foreach ($this->calls as $k => $r) {
         // check if method exists
         if (!method_exists(get_class($pq), $r['method'])) {
             throw new \Exception("Method '{$r['method']}' not implemented in PhpQuery, sorry...");
             // execute method
         } else {
             $pq = call_user_func_array(array($pq, $r['method']), $r['arguments']);
         }
     }
     if (!isset($this->options['dataType'])) {
         $this->options['dataType'] = '';
     }
     switch (strtolower($this->options['dataType'])) {
         case 'json':
             if ($pq instanceof PhpQueryObject) {
                 $results = array();
                 foreach ($pq as $node) {
                     $results[] = pq($node)->htmlOuter();
                 }
                 print PhpQuery::toJSON($results);
             } else {
                 print PhpQuery::toJSON($pq);
             }
             break;
         default:
             print $pq;
     }
     // output results
 }
Пример #2
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     $this->markup = PhpQuery::pq($this->template);
     $label = $this->markup['label'];
     $input = $this->markup['input'];
     foreach ($args as $key => $arg) {
         switch ($key) {
             case 'class':
                 $input->addClass($arg);
                 break;
             case 'label':
                 $label->removeClass('hidden')->html($arg);
                 break;
             case 'id':
                 $label->attr('for', $arg);
                 // pass to default
             // pass to default
             default:
                 $input->attr($key, $arg);
                 break;
         }
     }
     return parent::render();
 }
Пример #3
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     $this->markup = PhpQuery::pq($this->template);
     $label = $this->markup['label'];
     $textarea = $this->markup['textarea'];
     $description = $this->markup['.help-block'];
     foreach ($args as $key => $arg) {
         switch ($key) {
             case 'class':
                 $textarea->addClass($arg);
                 break;
             case 'label':
                 $label->removeClass('hidden')->html($arg);
                 break;
             case 'description':
                 $description->html($arg);
                 break;
             case 'value':
                 $textarea->html($arg);
                 break;
             case 'id':
                 $label->attr('for', $arg);
                 // pass to default
             // pass to default
             default:
                 $textarea->attr($key, $arg);
                 break;
         }
     }
     return parent::render();
 }
Пример #4
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     $this->markup = PhpQuery::pq($this->template);
     $label = $this->markup['label'];
     $select = $this->markup['select'];
     // label
     if (isset($args['label'])) {
         $label->removeClass('hidden')->html($args['label']);
     }
     // id
     if (isset($args['id'])) {
         $label->attr('for', $args['id']);
         $select->attr('id', $args['id']);
     }
     // name
     if (isset($args['name'])) {
         $select->attr('name', $args['name']);
     }
     $menus = XeMenu::getAll(XeSite::getCurrentSiteKey());
     foreach ($menus as $menu) {
         $option = PhpQuery::pq('<option></option>');
         $option->appendTo($select)->attr('value', $menu->id)->html($menu->title);
         if (isset($args['selected']) && $menu->id == $args['selected']) {
             $option->attr('selected', 'selected');
         } elseif (isset($args['value']) && $menu->id == $args['value']) {
             $option->attr('selected', 'selected');
         }
     }
     return parent::render();
 }
Пример #5
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     if (array_get($args, 'action') === null) {
         $this->template = '<div class="panel-group"></div>';
     } else {
         $this->template = '<form method="POST" enctype="multipart/form-data"></form>';
     }
     $this->markup = PhpQuery::pq($this->template);
     $form = $this->markup;
     foreach ($args as $key => $arg) {
         switch ($key) {
             case 'class':
                 $form->addClass($arg);
                 break;
             case 'inputs':
                 $this->appendInputs($form, $arg, array_get($args, 'value', []));
             default:
                 $form->attr($key, $arg);
                 break;
         }
     }
     return parent::render();
 }
Пример #6
0
 /**
  * @return void
  */
 function testMultiInsert()
 {
     // Multi-insert
     $pq = PhpQuery::newDocument('<li><span class="field1"></span><span class="field1"></span></li>')->find('.field1')->php('longlongtest');
     $validResult = '<li><span class="field1"><php>longlongtest</php></span><span class="field1"><php>longlongtest</php></span></li>';
     similar_text($pq->htmlOuter(), $validResult, $similarity);
     $this->assertGreaterThan(80, $similarity);
 }
Пример #7
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     $this->markup = PhpQuery::pq($this->template);
     $labelEl = $this->markup['label'];
     $selectEl = $this->markup['select'];
     $selectedValue = array_get($args, 'selected', null);
     if ($selectedValue === null) {
         $selectedValue = array_get($args, 'value', null);
     }
     foreach ($args as $key => $arg) {
         switch ($key) {
             case 'class':
                 $selectEl->addClass($arg);
                 break;
             case 'label':
                 $labelEl->removeClass('hidden')->html($arg);
                 break;
             case 'options':
                 $options = $arg;
                 if (is_callable($options)) {
                     $options = $options();
                 }
                 foreach ($options as $value => $option) {
                     if (is_array($option) === false) {
                         $text = $option;
                         if (is_string($value) === false) {
                             $value = $option;
                         }
                         $selected = '';
                     } else {
                         $value = array_get($option, 'value', $value);
                         $text = array_get($option, 'text', $value);
                     }
                     if ($selectedValue === null) {
                         $selected = array_get($option, 'selected', false) ? 'selected="selected"' : '';
                     } else {
                         $selected = $value === $selectedValue ? 'selected="selected"' : '';
                     }
                     $optionEl = PhpQuery::pq("<option value=\"{$value}\" {$selected} \">{$text}</option>");
                     $selectEl->append($optionEl);
                 }
                 break;
             case 'id':
                 $labelEl->attr('for', $arg);
                 // pass to default
             // pass to default
             default:
                 if (is_string($arg)) {
                     $selectEl->attr($key, $arg);
                 }
                 break;
         }
     }
     return parent::render();
 }
 /**
  * UIObject가 출력될 때 호출되는 메소드이다.
  *
  * @return string
  */
 public function render()
 {
     if (is_callable($this->callback)) {
         $callback = $this->callback;
         if ($this->markup === null) {
             PhpQuery::newDocument();
             $this->markup = PhpQuery::pq($this->template);
         }
         $callback($this->markup);
     }
     return $this->markup === null ? $this->template : $this->markup;
 }
Пример #9
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     $this->markup = PhpQuery::pq($this->template);
     $label = $this->markup['label'];
     $this->box = $this->markup['.checkbox'];
     $checkboxes = array_get($args, 'checkboxes');
     $nameGlobal = array_get($args, 'name');
     $labelText = array_get($args, 'label');
     if ($labelText !== null) {
         $label->removeClass('hidden')->html($labelText);
     }
     // checkbox가 따로 있을 경우
     if ($checkboxes !== null) {
         foreach ((array) $checkboxes as $arg) {
             $checkboxObj = PhpQuery::pq("<label class=\"checkbox-inline\"><input type=\"checkbox\"><span></span></label>");
             $arg = array_add($arg, 'name', $nameGlobal . '[]');
             $this->appendCheckbox($checkboxObj, $arg);
         }
         // checkbox가 따로 없을 경우
     } else {
         $checkboxObj = PhpQuery::pq("<input type=\"checkbox\">");
         foreach ($args as $key => $arg) {
             switch ($key) {
                 case 'class':
                     $checkboxObj->addClass('class', $arg);
                     break;
                 case 'id':
                     $label->attr('for', $arg);
                     // pass to default
                 // pass to default
                 default:
                     $checkboxObj->attr($key, $arg);
                     break;
             }
         }
     }
     return parent::render();
 }
Пример #10
0
 public function render()
 {
     $args = $this->arguments;
     PhpQuery::newDocument();
     // action, style에 따라 다른 form을 생성
     $this->initTemplate();
     $this->markup = PhpQuery::pq($this->template);
     $form = $this->markup;
     foreach ($args as $key => $arg) {
         switch ($key) {
             case 'class':
                 $form->addClass($arg);
                 break;
             case 'inputs':
             case 'fields':
                 $this->appendFields($form, $arg, array_get($args, 'value', []));
             default:
                 $form->attr($key, $arg);
                 break;
         }
     }
     return parent::render();
 }
Пример #11
0
 /**
  * @access private
  * @param $html
  */
 public function __loadSuccess($html)
 {
     if ($this->_loadSelector) {
         $html = PhpQuery::newDocument($html)->find($this->_loadSelector);
         unset($this->_loadSelector);
     }
     foreach ($this->stack(1) as $node) {
         PhpQuery::pq($node, $this->getDocumentID())->markup($html);
     }
 }
Пример #12
0
 /**
  * UIObject가 출력될 때 호출되는 메소드이다.
  *
  * @return string
  */
 public function render()
 {
     if (is_callable($this->callback)) {
         $callback = $this->callback;
         if ($this->markup === null) {
             PhpQuery::newDocument();
             $this->markup = PhpQuery::pq($this->template);
         }
         $callback($this->markup);
     }
     $viewStr = $this->markup === null ? $this->template : (string) $this->markup;
     return new Expression($viewStr);
 }
Пример #13
0
 /**
  * @param \Zend_Http_Client $xhr
  */
 public static function browserReceive($xhr)
 {
     PhpQuery::debug("[WebBrowser] Received from " . $xhr->getUri(true));
     // TODO handle meta redirects
     $body = $xhr->getLastResponse()->getBody();
     // XXX error ???
     if (strpos($body, '<!doctype html>') !== false) {
         $body = '<html>' . str_replace('<!doctype html>', '', $body) . '</html>';
     }
     $pq = PhpQuery::newDocument($body);
     $pq->document->xhr = $xhr;
     $pq->document->location = $xhr->getUri(true);
     $refresh = $pq->find('meta[http-equiv=refresh]')->add('meta[http-equiv=Refresh]');
     if ($refresh->size()) {
         //			print htmlspecialchars(var_export($xhr->getCookieJar()->getAllCookies(), true));
         //			print htmlspecialchars(var_export($xhr->getLastResponse()->getHeader('Set-Cookie'), true));
         PhpQuery::debug("Meta redirect... '{$refresh->attr('content')}'\n");
         // there is a refresh, so get the new url
         $content = $refresh->attr('content');
         $urlRefresh = substr($content, strpos($content, '=') + 1);
         $urlRefresh = trim($urlRefresh, '\'"');
         // XXX not secure ?!
         PhpQuery::ajaxAllowURL($urlRefresh);
         //			$urlRefresh = urldecode($urlRefresh);
         // make ajax call, passing last $xhr object to preserve important stuff
         $xhr = PhpQuery::ajax(array('type' => 'GET', 'url' => $urlRefresh, 'dataType' => 'html'), $xhr);
         if ($xhr->getLastResponse()->isSuccessful()) {
             // if all is ok, repeat this method...
             return call_user_func_array(array('\\PhpQuery\\Plugin\\UtilWebBrowser', 'browserReceive'), array($xhr));
         }
     } else {
         return $pq;
     }
 }