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 }
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(); }
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(); }
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(); }
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(); }
/** * @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); }
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; }
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(); }
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(); }
/** * @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); } }
/** * 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); }
/** * @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; } }