function load_admin(\Wa72\HtmlPageDom\HtmlPageCrawler &$c) { //Append Button $c->filter('.mvc-admin-bar .top-bar')->append('<button class="btn btn-success" data-toggle="navigation-edit-' . $this->id . '">Edit Navigation: ' . $this->title . '</button>'); //Append Edit Area $c->filter('.mvc-admin-bar .t-center .v-center')->append(Theme_Loader::get_instance()->render_file('modules/navigation/admin.twig', ['navitems' => $this->nav_items, 'page_identity' => $this->id])); }
function module_process(HtmlPageCrawler &$c) { $modules = $c->filter('module'); foreach ($modules as $mod) { $mod_type = $mod->getAttribute('type'); //Check if such a module exists $class = 'Theme_Module_' . ucfirst($mod_type); if (class_exists($class)) { // echo $mod->getAttribute('id'); $mod_ob = new $class($mod->getAttribute('id'), $this->page->id); /* @var $mod_ob Theme_Module_Interface */ if (method_exists($mod_ob, 'set_module_xml')) { $mod_ob->set_module_xml($c->filter('module[id="' . $mod->getAttribute('id') . '"]')->saveHTML()); } $c->filter('module[id="' . $mod->getAttribute('id') . '"]')->replaceWith($mod_ob->render()); if (method_exists($mod_ob, 'addCSS')) { $c->filter('head')->append($mod_ob->addCSS()); } if (method_exists($mod_ob, 'addJs')) { $c->filter('body')->append($mod_ob->addJs()); } if (G()->logged_in() && method_exists($mod_ob, 'load_admin')) { $mod_ob->load_admin($c); } } //Add css for this module if not exists //Add js for this module if not exists } }
/** * {@inheritdoc} */ public function listAttribute($content) { $this->crawler->addContent($content); $this->links = array(); $this->crawler->filter('a')->each(function (HtmlPageCrawler $anchor, $uri) { $href = $anchor->attr('href'); // @todo deprecated method. $this->links[] = $this->urlGenerator->generateFromPath($href, array('absolute' => TRUE)); }); $this->crawler->remove(); return implode(',', $this->links); }
/** * * * @param FilterResponseEvent $event */ public function onRenderOembedAdminProductDetailEditBefore(FilterResponseEvent $event) { $request = $event->getRequest(); $response = $event->getResponse(); $parts_btn = $this->app->renderView('Oembed/Resource/template/admin/embed-button.twig', array()); $parts_modal = $this->app->renderView('Oembed/Resource/template/admin/embed-modal.twig', array()); $crawler = new HtmlPageCrawler($response->getContent()); $crawler->filter('#admin_product_free_area')->before($parts_btn); $crawler->filter('body')->append($parts_modal); // $html = $this->getHtml($crawler); $html = $crawler->html(); $html = html_entity_decode($html, ENT_NOQUOTES, 'UTF-8'); $response->setContent($html); $event->setResponse($response); }
public function postIndex() { $imagem = Input::file('imagem'); if (is_null($imagem)) { throw new Exception('Você não selecionou um arquivo'); } $destinationPath = public_path() . DIRECTORY_SEPARATOR . 'uploads'; $filename = date('YmdHis') . '_' . $imagem->getClientOriginalName(); if ($imagem->move($destinationPath, $filename)) { //Load view laravel paths $paths = Config::get('view.paths'); //Load file view $file = $paths[0] . DIRECTORY_SEPARATOR . Input::get('view') . '.blade.php'; $html = file_get_contents($file); //Init crawler $crawler = new HtmlPageCrawler($html); //Set filter $filter = '#' . Input::get('id'); //Edit node $crawler->filter($filter)->setAttribute('src', '/uploads/' . $filename); $newHTML = html_entity_decode($crawler->saveHTML()); $newHTML = str_replace('%7B%7B', '{{', $newHTML); $newHTML = str_replace('%7D%7D', '}}', $newHTML); $newHTML = str_replace('%24', '$', $newHTML); $newHTML = str_replace('%20', ' ', $newHTML); $newHTML = str_replace('%7C', '|', $newHTML); //write file file_put_contents($file, $newHTML); return Redirect::back()->with('alert', 'Banner enviado com sucesso!'); } }
public function postIndex() { //Load view laravel paths $paths = Config::get('view.paths'); //Load file view $file = $paths[0] . DIRECTORY_SEPARATOR . Input::get('view') . '.blade.php'; $html = file_get_contents($file); //Init crawler $crawler = new HtmlPageCrawler($html); //Set filter $filter = '#' . Input::get('id'); //Edit node $crawler->filter($filter)->setInnerHtml(Input::get('html')); $newHTML = html_entity_decode($crawler->saveHTML()); $newHTML = str_replace('%7B%7B', '{{', $newHTML); $newHTML = str_replace('%7D%7D', '}}', $newHTML); $newHTML = str_replace('%24', '$', $newHTML); $newHTML = str_replace('%20', ' ', $newHTML); $newHTML = str_replace('%7C', '|', $newHTML); //write file file_put_contents($file, $newHTML); }
/** * Filter nodes by using a CSS selector * * @param string $selector CSS selector * @return HtmlPageCrawler */ public function filter($selector) { //echo "\n" . CssSelector::toXPath($selector) . "\n"; return $this->crawler->filter($selector); }
/** * @param string $selector * @return static */ public function find($selector) { return parent::filter($selector); }
/** * @covers Wa72\HtmlPageDom\HtmlPageCrawler::wrap */ public function testWrap() { $c = new HtmlPageCrawler('<div id="content"><h1>Title</h1></div>'); $c->filter('h1')->wrap('<div class="innercontent">'); $this->assertEquals('<div id="content"><div class="innercontent"><h1>Title</h1></div></div>', $c->saveHTML()); $c = new HtmlPageCrawler('<div id="content"><h1>Title</h1></div>'); $c->filter('h1')->wrap('<div class="ic">asdf<div class="a1"><div class="a2"></div></div></div></div>'); $this->assertEquals('<div id="content"><div class="ic">asdf<div class="a1"><div class="a2"><h1>Title</h1></div></div></div></div>', $c->saveHTML()); $c = new HtmlPageCrawler('<div id="content"><h1>Title</h1></div>'); $c->filter('h1')->wrap('<div class="ic">asdf</div><div>jkl</div>'); // wrap has more than 1 root element $this->assertEquals('<div id="content"><div class="ic">asdf<h1>Title</h1></div></div>', $c->saveHTML()); // only first element is used // Test for wrapping multiple nodes $c = new HtmlPageCrawler('<div id="content"><p>p1</p><p>p2</p></div>'); $c->filter('p')->wrap('<div class="p"></div>'); $this->assertEquals('<div id="content"><div class="p"><p>p1</p></div><div class="p"><p>p2</p></div></div>', $c->saveHTML()); $c = new HtmlPageCrawler('plain text node'); $c->wrap('<div class="ic"></div>'); $this->assertEquals('<div class="ic">plain text node</div>', $c->parents()->eq(0)->saveHTML()); $c = HtmlPageCrawler::create('<div>'); $m = HtmlPageCrawler::create('message 1')->appendTo($c); $m->wrap('<p>'); $m = HtmlPageCrawler::create('message 2')->appendTo($c); $m->wrap('<p>'); $this->assertEquals('<div><p>message 1</p><p>message 2</p></div>', $c->saveHTML()); }
} $page = get($_GET['page'], 1); $site = get($_GET['site']); $show = get($_GET['show']); $loader = new Twig_Loader_Filesystem(__DIR__); $twig = new Twig_Environment($loader, array()); if ($site) { $_site = $sites[$site]; $url_f = $_site['page']; if ($show) { if (startsWith($show, 'http')) { $url = $show; } else { $url = $url_f(1); $url_array = parse_url($url); $url = $url_array['scheme'] . '://' . $url_array['host'] . $show; $content = new HtmlPageCrawler(file_get_contents($url)); $content = $content->filter($_site['show_filter']); echo $twig->render('show.html', compact('site', 'content', 'url')); } } else { $url = $url_f($page); $content = new HtmlPageCrawler(file_get_contents($url)); $list = $content->filter($_site['index_filter'])->each(function ($node) { return $node; }); echo $twig->render('list.html', compact('list', 'page', 'site', 'url')); } } else { echo $twig->render('sites.html', compact('sites')); }