diff --git a/reader.module b/reader.module index 18b1c4b..40d160a 100644 --- a/reader.module +++ b/reader.module @@ -169,11 +169,7 @@ function reader_reader_channels() { /** * Implements hook_reader_timeline(). - * - * @param $id - * - * @return array[] */ -function reader_reader_timeline($id) { - return \Drupal::service('reader.reader')->getTimeline($id); +function reader_reader_timeline($id, $search = NULL) { + return \Drupal::service('reader.reader')->getTimeline($id, $search); } diff --git a/src/Controller/ReaderController.php b/src/Controller/ReaderController.php index 4776efe..1307264 100644 --- a/src/Controller/ReaderController.php +++ b/src/Controller/ReaderController.php @@ -131,8 +131,8 @@ class ReaderController extends ControllerBase { * @param \Symfony\Component\HttpFoundation\Request $request * @param $module * @param $id - * @param bool $is_home - * @param string $search + * @param $is_home + * @param $search * * @return array */ @@ -141,7 +141,6 @@ class ReaderController extends ControllerBase { $timeline_response = []; $timeline = []; $pager = NULL; - $actions = NULL; $page = ''; $title = $this->t('Unknown timeline'); @@ -386,7 +385,8 @@ class ReaderController extends ControllerBase { * @return array */ public function search(Request $request) { - return $this->timeline($request, 'indieweb_microsub', NULL, FALSE, $request->query->get('keyword')); + $module = $request->query->get('module') ?: 'indieweb_microsub'; + return $this->timeline($request, $module, 'internal-search', FALSE, $request->query->get('keyword')); } /** diff --git a/src/Services/Reader.php b/src/Services/Reader.php index f8a0f48..97c1977 100644 --- a/src/Services/Reader.php +++ b/src/Services/Reader.php @@ -107,12 +107,19 @@ class Reader extends ReaderBase { public function getTimeline($id, $search = NULL) { $items = []; $paging = []; + $limit = 20; if ($this->moduleHandler->moduleExists('aggregator') && $this->currentUser->hasPermission('access reader')) { /** @var \Drupal\aggregator\ItemInterface[] $posts */ $page = $this->requestStack->getCurrentRequest()->get('page', 0); - $posts = $this->entityTypeManager->getStorage('aggregator_item')->loadAll(20); + + if (empty($search)) { + $posts = $this->entityTypeManager->getStorage('aggregator_item')->loadAll($limit); + } + else { + $posts = $this->searchAggregatorPosts($search, $limit); + } foreach ($posts as $post) { /** @var \Drupal\aggregator\FeedInterface $feed */ $feed = $this->entityTypeManager->getStorage('aggregator_feed')->load($post->getFeedId()); @@ -142,4 +149,35 @@ class Reader extends ReaderBase { return ['items' => $items] + $paging; } + /** + * Search in the aggregator posts. + * + * @param $search + * @param $limit + * + * @return mixed + * + * @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException + * @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException + */ + protected function searchAggregatorPosts($search, $limit) { + $query = $this->entityTypeManager->getStorage('aggregator_item')->getQuery(); + + $query->accessCheck(FALSE) + ->sort('timestamp', 'DESC') + ->sort('iid', 'DESC'); + + $group = $query + ->orConditionGroup() + ->condition('title', '%' . \Drupal::database()->escapeLike($search) . '%', 'LIKE') + ->condition('description', '%' . \Drupal::database()->escapeLike($search) . '%', 'LIKE'); + $query->condition($group); + + if (!empty($limit)) { + $query->pager($limit); + } + + return $this->entityTypeManager->getStorage('aggregator_item')->loadMultiple($query->execute()); + } + } diff --git a/tests/modules/reader_test/assets/rss.xml b/tests/modules/reader_test/assets/rss.xml index 89b7f28..bc492f4 100644 --- a/tests/modules/reader_test/assets/rss.xml +++ b/tests/modules/reader_test/assets/rss.xml @@ -11,19 +11,19 @@ All of us in the Open Source CMS world are asked, from time to time, variations on the question of: “Which is better, Drupal or WordPress?”  Of course, there’s not a simple answer to the WordPress vs. Drupal question. Many have a strong bias towards one content management system or the other, but often, staunch opinions on the subject are based on a few cursory facts or outdated information. - Fri, 04 Dec 2020 22:14:00 +0000 + Fri, 04 Apr 2021 22:14:00 +0000 TEN7 Blog's Drupal Posts: Flight Deck on ARM https://ten7.com/blog/post/flight-deck-arm <p><a href="https://en.wikipedia.org/wiki/ARM_architecture">ARM</a> is not a new processor architecture. Virtually every smartphone today has one inside and has since the earliest days of iOS and Android. In fact, ARM goes all the way back to 1983, when transgender woman Sophie Wilson began designing the instruction set for the Acorn RISC Machine. Despite its long history, however, it’s never been considered a serious contender for workstations or desktop machines where x86 reigns supreme. Even in the data center, ARM is a comparative newcomer, with few cloud providers supporting it.</p> - Fri, 04 Dec 2020 13:00:10 +0000 + Fri, 04 Apr 2021 13:00:10 +0000 Ixis.co.uk - Thoughts: Is It Time You Upgraded to Drupal 9? http://ixis.co.uk/blog/it-time-you-upgraded-drupal-9 Many production websites out there are still happily running on Drupal 7, whilst newer ones have been started on Drupal 8, but the question keeps coming up - should we wait for Drupal 9, and if so, when is it due for release? - Fri, 04 Dec 2020 08:00:00 +0000 + Fri, 04 Apr 2021 08:00:00 +0000 Chapter Three: An Experiment: GraphQL in Twig @@ -34,7 +34,7 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M <blockquote> <p class="alt-fontface large">"The GraphQL Twig module allows you to inject data into Twig templates by simply adding a GraphQL query. No site building or pre-processing necessary."</p></blockquote> - Thu, 03 Dec 2020 19:27:09 +0000 + Thu, 03 Apr 2021 19:27:09 +0000 Amazee Labs: Why do enterprises trust Amazee Labs and our Open Source Tech Stack over WordPress based solutions? @@ -43,13 +43,13 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M At their most simple, both Drupal and WordPress are open source PHP based Content Management Systems (CMS) which have evolved from simple beginnings to great prominence. In the early days of the “CMS wars” many web agencies positioned themselves on different sides of the question “which CMS is best?” - Thu, 03 Dec 2020 06:23:38 +0000 + Thu, 03 Apr 2021 06:23:38 +0000 undpaul: Happy Birthday! 10 years undpaul https://www.undpaul.de/en/blog/2020/12/03/happy-birthday-10-years-undpaul We really zeroed for the first time. undpaul had its 10th birthday yesterday - and that was celebrated! With hot wine, delicious food, party hats, and memories of one or the other highlight with the undpaul team - of course all Corona-compliant in a remote meeting. - Thu, 03 Dec 2020 00:00:00 +0000 + Thu, 03 Apr 2021 00:00:00 +0000 Lullabot: Decoupled Platforms: Contentful vs. Drupal @@ -57,7 +57,7 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M <p>Many platforms are advertising the ability to manage content in one place while publishing it to multiple channels. They provide a way to model, manage, and create content and then expose that content via an API. </p> <p>These are decoupled-only (or headless) back-ends. The only way to present your content is to create an application that consumes the API, interprets it, and renders the content in your desired format.</p> - Wed, 02 Dec 2020 22:48:53 +0000 + Wed, 02 Apr 2021 22:48:53 +0000 Drupal blog: Drupal 9.1.0 is available @@ -89,31 +89,31 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M <p>Minor releases like Drupal 9.1.0 include backwards-compatible API additions for developers as well as new features.</p> <p>Since minor releases are backwards-compatible, modules, themes, and translations that supported Drupal 9.0.x and earlier will be compatible with 9.1.x as well. However, the new version does include some changes to strings, user interfaces, <a href="https://www.drupal.org/about/core/policies/core-change-policies/drupal-8-and-9-backwards-compatibility-and-internal-api" rel="nofollow">internal APIs</a> and API deprecations. This means that some small updates may be required for your translations, modules, and themes. <a href="https://www.drupal.org/project/drupal/releases/9.1.0" rel="nofollow">Read the 9.1.0 release notes</a> for a full list of changes that may affect your modules and themes.</p> <p>This release has advanced the Drupal project significantly and represents the efforts of hundreds of volunteers and contributors from various organizations. Thank you to everyone who contributed to Drupal 9.1.0!</p></div></div></div> - Wed, 02 Dec 2020 19:45:58 +0000 + Wed, 02 Apr 2021 19:45:58 +0000 Jacob Rockowitz: Webform 6.x is almost here https://www.jrockowitz.com/blog/webform-6-x <p>I’d like to begin by saying most people will not notice any significant difference between Webform 8.x-5.x and Webform 6.x because most of the noteworthy changes are happening under the hood to APIs and configuration: there was <a href="https://www.jrockowitz.com/blog/webform-road-to-drupal-9">a bump in the Webform module's road to Drupal 9</a>, which helped <a href="https://www.drupal.org/project/webform/issues/3067546">fix subclassing and stop the overriding constructors</a>. This change became the initial commit to the Webform module's 6.x branch. Most of the subsequent commits to the Webform 6.x branch addressed the removal of deprecated code plus some minor tweaks to settings and options.</p><h3><p>Removing the Webform module's dependency on jQueryUI</p></h3><p>The most noticeable change in Drupal 9 and Webform 6.x is <a href="https://www.drupal.org/node/3067969">most jQuery UI asset libraries are deprecated and moved to contrib modules</a>. The Webform module was using the jQueryUI's <a href="https://jqueryui.com/tabs/">Tabs</a>, <a href="https://jqueryui.com/tooltip/">Tooltip</a>, and <a href="https://jqueryui.com/datepicker/">Date picker</a> plugins. Although I considered keeping the requirement of these plugins using Drupal's corresponding <a href="https://www.drupal.org/project/jquery_ui">jQueryUI modules</a>, after some nudging from the Drupal community, I decided to replace the jQueryUI Tabs and Tooltip and make the jQueryUI Date picker an optional dependency.</p><p>The <a href="https://jqueryui.com/tabs/">jQuery UI Tabs</a> plugin was replaced with <a href="https://github.com/cferdinandi/tabby">Tabby</a>, a lightweight, accessible vanilla JS toggle tabs library. Since tabs only appear within the Webform module's admin UI, I felt that Tabby was the most straightforward solution without having the Webform module provide its own tabs implementation.</p><p>Below is a screenshot of Tabby in the Webform module's user interface.</p><p>Replacing the <a...<a href=https://www.jrockowitz.com/blog/webform-6-x>Read More</a> - Wed, 02 Dec 2020 16:55:31 +0000 + Wed, 02 Apr 2021 16:55:31 +0000 Axelerant Blog: BADCamp: My First Experience in the Drupal Community as a Non-Developer https://www.axelerant.com/resources/team-blog/badcamp-my-first-experience-drupal-community-non-developer - Wed, 02 Dec 2020 11:09:00 +0000 + Wed, 02 Apr 2021 11:09:00 +0000 Axelerant Blog: Upgrading Drupal to PHP 8 https://www.axelerant.com/resources/team-blog/upgrading-drupal-php-8 - Wed, 02 Dec 2020 11:09:00 +0000 + Wed, 02 Apr 2021 11:09:00 +0000 Axelerant Blog: Drupal 8 And The Approach To CKEditor Plugins https://www.axelerant.com/resources/team-blog/drupal-8-and-approach-ckeditor-plugins - Wed, 02 Dec 2020 11:09:00 +0000 + Wed, 02 Apr 2021 11:09:00 +0000 Agiledrop.com Blog: Keeping control of your project when outsourcing software development @@ -124,20 +124,20 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M </a> </div> <p>In this article, we discuss the importance and different options of keeping control of your project when outsourcing development. </p> <a href="https://www.agiledrop.com/blog/keeping-control-your-project-when-outsourcing-software-development">READ MORE</a> - Wed, 02 Dec 2020 09:25:36 +0000 + Wed, 02 Apr 2021 09:25:36 +0000 Lucius Digital: Using Drupal and Bootstrap HTML? An easy snippet for great Toasts instead of boring Drupal messages :) https://www.lucius.digital/en/blog/using-drupal-and-bootstrap-html-easy-snippet-great-toasts-instead-boring-drupal-messages <img src="https://assets.lucius.digital/sites/default/files/drupal-bootstrap-toasts-messages_0.jpg" alt="Using Drupal and Bootstrap HTML? An easy snippet for great Toasts instead of boring Drupal messages :)"> So we wanted to implement the great Bootstrap Toasts feature in our social productivity Drupal distro OpenLucius. HTML framework Bootstrap provides Toasts out of the box. After some trial and error, the end result seems fairly easy to use for everybody. So here is how: - Wed, 02 Dec 2020 08:47:16 +0000 + Wed, 02 Apr 2021 08:47:16 +0000 Promet Source: Visual Impact and Great UX for High-Stakes Objectives https://www.prometsource.com/blog/Marin-County-Covid-Website Early in 2020, as COVID-19 began to seize headlines, counties throughout California were on the front lines as “hotspots,” and citizens of Marin County were paying close attention.  - Tue, 01 Dec 2020 23:55:22 +0000 + Tue, 01 Apr 2021 23:55:22 +0000 Specbee: A Brief Guide to Node Package Manager (NPM) in Drupal @@ -148,26 +148,26 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M <div class="layout layout--banner" id="banner"> - + <div class="layout__col layout__col--main"> <div data-layout-content-preview-placeholder-label=""Page title" block" class="container block block--specbee-blocks block--page-title"> - - + + <h1 class="page-title"><span class="title">Top 10 best practices for designing a perfect UX for your mobile app</span></h1> </div> </div> - + </div> <div class="layout article__content container is-sticky layout--67-33" id=""> - + <div class="layout__col layout__col--main"> <div data-layout-content-preview-placeholder-label=""Body" field" class="block block--layout-builder block--field-blocknodeblogsbody"> - - - + + + <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><p>Node Package Manager (NPM) is an open-source software library that has over 800,000 code packages. In simple terms, we can say that NPM is a command-line tool that installs, updates, or uninstalls node.js packages of an application.</p> <h2>Installation</h2> @@ -175,10 +175,10 @@ Of course, there’s not a simple answer to the WordPress vs. Drupal question. M <p>Inside the project theme folder, directly run the <strong>npm install </strong>command. It will install all the packages that are there in the <strong>package.json</strong> file.<br /> Once done, you can verify the NPM installation by writing the following command in the command prompt. This will show you the version of the NPM.</p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> npm -v @@ -186,10 +186,10 @@ npm -v <p>If you have older version of NPM then you can update it to the latest version using this command:</p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> npm install npm -g @@ -209,10 +209,10 @@ The main goal of this is automated dependency and package management. Here, you <p>Run the below command in the terminal to install the node modules inside your project theme folder.  </p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> npm install @@ -228,20 +228,20 @@ This way we can use other NPM packages like slick-carousel, responsive tabs etc. <p>This way we can use other NPM packages like slick-carousel, responsive tabs etc. to your project using this command:</p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> npm install <package name><package name=""></package></code></pre> <p>Use this command to update the packages:</p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> C:\MyNodeProj> npm update <package name><package name=""></package></code></pre> @@ -249,44 +249,44 @@ C:\MyNodeProj> npm update <package name><package name=""&g <p><br /> To uninstall the package, use this command:</p> -<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; +<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px #999999; - line-height: 14px; padding: 5px; + line-height: 14px; padding: 5px; overflow: none; width: 100%"> <code style="color:#000000;word-wrap:normal;"> C:\>npm uninstall <package name><package name=""></package></code></pre> </div> - + </div> <div data-layout-content-preview-placeholder-label=""Footer notes" field" class="block block--layout-builder block--field-blocknodeblogsfield-footer-notes"> - - - + + + <div class="clearfix text-formatted field field--name-field-footer-notes field--type-text-long field--label-hidden field__item"><p>Node Package Manager is a very useful tool for developers to automate a lot of front-end tasks. It lets you install and play around with tons of third-party libraries to run difficult and time-consuming tasks. In this brief guide we have discussed about NPM installation and the usage of Gulp in Drupal. If you found this blog useful, don’t forget to<a href="https://specbee.us19.list-manage.com/subscribe?u=a3d560a1fc06522ef6c707339&id=689c8b7694"> sign up to our newsletter </a>so you don’t miss out on our latest insights by our <a href="https://www.specbee.com/drupal-web-development-services">Drupal experts</a>.</p> </div> - + </div> <div data-layout-content-preview-placeholder-label=""Tags" field" class="block block--layout-builder block--field-blocknodeblogsfield-tags"> - - - + + + <div class="field field--name-field-tags field--type-entity-reference field--label-hidden field__items"> <div class="field__item"><a href="https://www.specbee.com/blogs/tags/drupal-planet" hreflang="en">Drupal Planet</a></div> <div class="field__item"><a href="https://www.specbee.com/blogs/tags/drupal-module" hreflang="en">Drupal Module</a></div> <div class="field__item"><a href="https://www.specbee.com/blogs/tags/drupal-development" hreflang="en">Drupal Development</a></div> <div class="field__item"><a href="https://www.specbee.com/blogs/tags/drupal-tutorial" hreflang="en">Drupal Tutorial</a></div> </div> - + </div> <div data-layout-content-preview-placeholder-label=""Blog authoring info" block" class="block block--specbee-blocks block--blog-authoring-info"> - - + + <div class="authoring-info"><span class="author">Shefali Shetty</span><span class="date">Apr 05, 2017</span></div> </div> <div data-layout-content-preview-placeholder-label=""Mailchimp Subscription Form: Newsletter subscribe" block" class="block block--mailchimp-signup block--mailchimp-signup-subscribe-blocknewsletter-subscribe"> - - + + <form class="mailchimp-signup-subscribe-form" data-drupal-selector="mailchimp-signup-subscribe-block-newsletter-subscribe-form" action="https://www.specbee.com/blogs/taxonomy/term/1/feeds.xml" method="post" id="mailchimp-signup-subscribe-block-newsletter-subscribe-form" accept-charset="UTF-8"> <div id="mailchimp-newsletter-689c8b7694-mergefields" class="mailchimp-newsletter-mergefields"><div class="js-form-item form-item js-form-type-email form-type-email js-form-item-mergevars-email form-item-mergevars-email"> <label for="edit-mergevars-email" class="js-form-required form-required">Subscribe For Our Newsletter And Stay Updated</label> @@ -298,9 +298,9 @@ C:\>npm uninstall <package name><package name=""></p </div> <div data-layout-content-preview-placeholder-label=""Disqus Widget" block" class="block block--specbee-blocks block--disqus-widget"> - - - + + + <p style="text-align:center"><button class="btn btn-primary" id="disqus_trigger" onclick="load_disqus('specbee-1')">Leave us a Comment</button></p> @@ -312,14 +312,14 @@ C:\>npm uninstall <package name><package name=""></p </div> <div class="layout__col layout__col--sidebar" id="layout__col--sidebar"> <div data-layout-content-preview-placeholder-label=""Blog authoring info" block" class="block block--specbee-blocks block--blog-authoring-info"> - - + + <div class="authoring-info"><span class="author">Shefali Shetty</span><span class="date">Apr 05, 2017</span></div> </div> <div data-layout-content-preview-placeholder-label=""ShareThis Widget" block" class="block block--specbee-blocks block--share-this-widget"> - - - + + + <div class="sharethis-inline-share-buttons st-right  st-inline-share-buttons st-animated" id="st-1"> <div class="st-total "> @@ -327,24 +327,24 @@ C:\>npm uninstall <package name><package name=""></p </div> </div> <div data-layout-content-preview-placeholder-label=""Recent Blogs" views block" class="block block--views block--views-blockrecent-blogs-sidebar-recent-blogs"> - + <h2 class="block__title">Recent Posts</h2> - + <div class="views-element-container"><div class="view view-recent-blogs view-id-recent_blogs view-display-id-sidebar_recent_blogs js-view-dom-id-4a2d585ef91b93d27735c882400457a609e15f6feeca673f3f0be699311d425e"> - - - + + + <div class="view-content"> <div class="views-row"> <article data-history-node-id="263" role="article" class="node node--type-blogs node--promoted node--view-mode-aside-content" about="https://www.specbee.com/blogs/brief-guide-node-package-manager-npm-drupal"><div class="node__media"> - + <div class="field field--name-field-teaser-image field--type-entity-reference field--label-hidden field__item"><article class="media media--type-image media--view-mode-miniature"><div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Image</div> <div class="field__item"> <img src="https://www.specbee.com/blogs/sites/default/files/styles/miniature/public/2020-08/drupal-9-performance.jpg?itok=leSNvYMC" width="466" height="354" alt="drupal 9" typeof="foaf:Image" class="image-style-miniature" /></div> </div> </article></div> - + </div> <div class="node__meta"> <h4 class="node__title"> @@ -355,14 +355,14 @@ C:\>npm uninstall <package name><package name=""></p </article></div> <div class="views-row"> <article data-history-node-id="262" role="article" class="node node--type-blogs node--promoted node--view-mode-aside-content" about="https://www.specbee.com/blogs/how-migrate-drupal-8-sql-source-6-simple-steps"><div class="node__media"> - + <div class="field field--name-field-teaser-image field--type-entity-reference field--label-hidden field__item"><article class="media media--type-image media--view-mode-miniature"><div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Image</div> <div class="field__item"> <img src="https://www.specbee.com/blogs/sites/default/files/styles/miniature/public/2020-11/migrate-drupal-8-min.jpg?itok=keO2lb08" width="466" height="354" alt="migrate -drupal" typeof="foaf:Image" class="image-style-miniature" /></div> </div> </article></div> - + </div> <div class="node__meta"> <h4 class="node__title"> @@ -373,14 +373,14 @@ C:\>npm uninstall <package name><package name=""></p </article></div> <div class="views-row"> <article data-history-node-id="261" role="article" class="node node--type-blogs node--promoted node--view-mode-aside-content" about="https://www.specbee.com/blogs/how-configure-faceted-search-drupal-8-and-9-easy-step-step-tutorial"><div class="node__media"> - + <div class="field field--name-field-teaser-image field--type-entity-reference field--label-hidden field__item"><article class="media media--type-image media--view-mode-miniature"><div class="field field--name-field-media-image field--type-image field--label-visually_hidden"> <div class="field__label visually-hidden">Image</div> <div class="field__item"> <img src="https://www.specbee.com/blogs/sites/default/files/styles/miniature/public/2020-11/faceted%20search-02-min.jpg?itok=w9Paurlm" width="466" height="354" alt="faceted search" typeof="foaf:Image" class="image-style-miniature" /></div> </div> </article></div> - + </div> <div class="node__meta"> <h4 class="node__title"> @@ -391,15 +391,15 @@ C:\>npm uninstall <package name><package name=""></p </article></div> </div> - + </div> </div> </div> <div data-layout-content-preview-placeholder-label=""CTA" field" class="block block--layout-builder block--field-blocknodeblogsfield-cta"> - - - + + + <div> <div class="sidebar-cta"> <div class="sidebar-cta__title">Want to extract the maximum out of Drupal?</div> @@ -410,17 +410,17 @@ C:\>npm uninstall <package name><package name=""></p </div> </div> - + </div> <div class="layout blog__footer" id=""> - + <div class="layout__col layout__col--main"> <div data-layout-content-preview-placeholder-label=""Featured Success Stories" block" class="block block--block-content block--block-contentf9ed6975-9054-4494-ab08-39a6ebf2d101"> - - - + + + <div class="clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item"><div class="featured-stories"> <div class="container"> <h2 class="heading">Featured Success Stories</h2> @@ -452,25 +452,25 @@ C:\>npm uninstall <package name><package name=""></p </div> </div> </div> - + </div> </div> - + </div> - Tue, 01 Dec 2020 14:55:19 +0000 + Tue, 01 Apr 2021 14:55:19 +0000 Axelerant Blog: It’s Time To Update The Drupal Core https://www.axelerant.com/resources/articles/its-time-update-drupal-core - Tue, 01 Dec 2020 13:24:00 +0000 + Tue, 01 Apr 2021 13:24:00 +0000 Axelerant Blog: Create A Dynamic Route And Upcast Its Parameter In Drupal 8 https://www.axelerant.com/resources/team-blog/create-dynamic-route-and-upcast-parameter-Drupal8 - Tue, 01 Dec 2020 13:24:00 +0000 + Tue, 01 Apr 2021 13:24:00 +0000 ADCI Solutions: Why upgrade PHP: a guide without complicated explanations @@ -484,7 +484,7 @@ C:\>npm uninstall <package name><package name=""></p <p> </p> <p><a href="https://www.adcisolutions.com/knowledge/why-upgrade-php-guide-without-complicated-explanations?utm_source=dorg&utm_medium=planet-drupal&utm_campaign=why-upgrade-php&utm_content=planet-drupal-why-upgrade-php"><img alt="PHP Upgrade" data-entity-type="file" data-entity-uuid="85309ba8-0c32-44c4-bbe6-bde86f66a3df" src="https://www.adcisolutions.com/sites/default/files/inline-images/drupal-planet-_640_320_10.png" /></a></p> - Tue, 01 Dec 2020 11:32:26 +0000 + Tue, 01 Apr 2021 11:32:26 +0000 Drupal core announcements: Feedback needed: Dropping support for Internet Explorer 11 in Drupal 10 @@ -513,7 +513,7 @@ C:\>npm uninstall <package name><package name=""></p <p>Even if Drupal 10 drops support for Internet Explorer 11, you can continue using Drupal 9 until late 2023. We recommend advising your users to move to another browser before that. If you believe your users have specific requirements as to why they cannot move from Internet Explorer 11, post them on <a href="https://www.drupal.org/project/drupal/issues/3155358">the Internet Explorer 11 policy discussion</a>.</p> <h3>Would this affect Drupal 7?</h3> <p>No. Drupal 7 remains compatible with Internet Explorer 11. A separate announcement will be issued if that changes.</p> - Mon, 30 Nov 2020 12:25:06 +0000 + Mon, 30 Mar 2021 12:25:06 +0000 Drupal Core News: Feedback needed: Dropping support for Internet Explorer 11 in Drupal 10 @@ -542,7 +542,7 @@ C:\>npm uninstall <package name><package name=""></p <p>Even if Drupal 10 drops support for Internet Explorer 11, you can continue using Drupal 9 until late 2023. We recommend advising your users to move to another browser before that. If you believe your users have specific requirements as to why they cannot move from Internet Explorer 11, post them on <a href="https://www.drupal.org/project/drupal/issues/3155358" rel="nofollow">the Internet Explorer 11 policy discussion</a>.</p> <h3>Would this affect Drupal 7?</h3> <p>No. Drupal 7 remains compatible with Internet Explorer 11. A separate announcement will be issued if that changes.</p></div></div></div> - Mon, 30 Nov 2020 12:25:01 +0000 + Mon, 30 Mar 2021 12:25:01 +0000 Web Omelette: New Drupal module: multi-value form elements @@ -578,20 +578,20 @@ C:\>npm uninstall <package name><package name=""></p <p>Check out some more examples of how to use this element and what options it has above the <code>Drupal\multivalue_form_element\Element\MultiValue</code> class.</p> <p>This module is sponsored by the European Commission as part of the <a href="https://github.com/openeuropa">OpenEuropa</a> initiative and all the work my colleagues and myself are doing there.</p> </div></div></div> - Mon, 30 Nov 2020 09:04:29 +0000 + Mon, 30 Mar 2021 09:04:29 +0000 Yusef Blog: Auto Deploy a project with leveraging gitlab CI/CD http://www.yuseferi.com/en/blog/Auto-Deploy-project-leveraging-gitlab-CICD A few days ago Github again, prevents access to my personal private project on Github because I visited my home country last year. I decided to move my private repositories from Github to Gitlab. after migrating my project I noticed I haven't work with Gitlab for a long time and during this time it has added a lot of tools. like Bitbucket and Github it server very convenient CI/CD development that developers easily deploy their projects to servers without any cover. - Sun, 29 Nov 2020 20:40:47 +0000 + Sun, 29 Mar 2021 20:40:47 +0000 Droptica: Users, Roles and Permissions in Drupal - the Most Important Informations for a Drupal Developer http://www.droptica.com/blog/users-roles-and-permissions-drupal-most-important-informations-drupal-developer/?utm_source=rss&amp;utm_medium=rss&amp;utm_content=rss?utm_source=rss&utm_medium=rss&utm_content=rss <img src="http://www.droptica.com/sites/droptica.com/files/media/image/padlock-and-different-gadgets-on-the-wooden-office-PJR2ZPC.jpg" width="3900" height="2600" alt="locks" typeof="Image" /><div class="clearfix paragraph paragraph--type--d-p-blog-text paragraph--view-mode--default"> - + <div class="clearfix text-formatted field field--name-field-d-long-text field--type-text-long field--label-hidden field__item"><p>Drupal is being chosen as a platform for building websites, among other things, due to its flexibility. If you want a system ideally suited to your business model and better than the competition's systems, Drupal will prove to be perfect. One of the areas you can customise in Drupal is the user permissions system. Take a few minutes to learn about the permission management abilities of Drupal.</p> @@ -753,9 +753,9 @@ if ($node->access('edit', $user)) { <p>If you need support from Drupal specialists on permissions or other issues, use the services of our <a href="https://www.droptica.com/services/teams-of-drupal-developers/" target="_blank">Drupal developers</a>.</p> </div> - + </div> - Fri, 27 Nov 2020 11:57:59 +0000 + Fri, 27 Mar 2021 11:57:59 +0000 Sooper Drupal Themes: Evaluate our Drupal layout builder now with our new and improved demo site! @@ -798,7 +798,7 @@ if ($node->access('edit', $user)) { </div> </div> </div> - Fri, 27 Nov 2020 09:39:30 +0000 + Fri, 27 Mar 2021 09:39:30 +0000 Security advisories: Drupal core - Critical - Arbitrary PHP code execution - SA-CORE-2020-013 @@ -826,7 +826,7 @@ TD - Target distribution: Only uncommon module configurations are exploitable&qu <li><a href="https://www.drupal.org/user/3064" rel="nofollow">Neil Drumm</a> of the Drupal Security Team</li> <li><a href="https://www.drupal.org/user/395439" rel="nofollow">Lee Rowlands</a> of the Drupal Security Team</li> </ul></div></div></div> - Wed, 25 Nov 2020 23:57:48 +0000 + Wed, 25 Mar 2021 23:57:48 +0000 drunomics: Nuxt.js - The frontend framework for decoupled Drupal with Custom Elements @@ -906,21 +906,21 @@ In my <a data-iconurl="https://drunomics.com/sites/all/themes/druweb/fav <p>Handling blocks &amp; layout builder, content previews, forms, caching &amp; performance optimizations.</p> </li> </ul> -<p>Finally, I'm going to talk more about this stack at the <a href="https://events.drupal.org/europe2020" rel="noopener noreferrer" target="_blank">Drupalcon Europe 2020 </a>in my session "<a href="https://events.drupal.org/europe2020/sessions/custom-elements-alternate-render-api-decoupled-drupal" rel="noopener noreferrer" target="_blank" title="">Custom Elements: An alternate Render API for decoupled Drupal</a>" at December 08 - 09:15 - so mark your calendars!</p> +<p>Finally, I'm going to talk more about this stack at the <a href="https://events.drupal.org/europe2020" rel="noopener noreferrer" target="_blank">Drupalcon Europe 2021 </a>in my session "<a href="https://events.drupal.org/europe2020/sessions/custom-elements-alternate-render-api-decoupled-drupal" rel="noopener noreferrer" target="_blank" title="">Custom Elements: An alternate Render API for decoupled Drupal</a>" at December 08 - 09:15 - so mark your calendars!</p> <p> </p> <p> </p> <p> </p> <p> </p> - Wed, 25 Nov 2020 20:53:32 +0000 + Wed, 25 Mar 2021 20:53:32 +0000 - Amazee Labs: DrupalCon Europe 2020 – Here We Come! + Amazee Labs: DrupalCon Europe 2021 – Here We Come! https://www.amazeelabs.com/en/journal/drupalcon-europe-2020-here-we-come - <img src="https://www.amazeelabs.com/sites/default/files/styles/leading_image/public/images/current-affairs/AL-Attending-DrupalCon-Blog_0.jpg?h=994a2424&amp;itok=1Nn2FHye" width="1120" height="630" alt="Amazee Labs at DrupalCon Europe 2020" title="DrupalCon Europe 2020 – Here We Come!" class="image-style-leading-image" /> + <img src="https://www.amazeelabs.com/sites/default/files/styles/leading_image/public/images/current-affairs/AL-Attending-DrupalCon-Blog_0.jpg?h=994a2424&amp;itok=1Nn2FHye" width="1120" height="630" alt="Amazee Labs at DrupalCon Europe 2020" title="DrupalCon Europe 2021 – Here We Come!" class="image-style-leading-image" /> - DrupalCon Europe 2020 is just around the corner and we’re super excited to attend, speak and contribute to this year's virtual event for all things Drupal. - Wed, 25 Nov 2020 20:12:39 +0000 + DrupalCon Europe 2021 is just around the corner and we’re super excited to attend, speak and contribute to this year's virtual event for all things Drupal. + Wed, 25 Mar 2021 20:12:39 +0000 OpenSense Labs: Mistakes to avoid on your drupal website @@ -1140,7 +1140,7 @@ Are you adding internal links to make your less popular pages gain attention thr <div class="field-item">On</div> </div> </div> - Wed, 25 Nov 2020 07:50:38 +0000 + Wed, 25 Mar 2021 07:50:38 +0000 Promet Source: Connection and Humor in a Year of Unexpected Challenges @@ -1148,7 +1148,7 @@ Are you adding internal links to make your less popular pages gain attention thr Thanksgiving this year will be different from any we’ve ever experienced, but then again, the same could be said for pretty much every aspect of 2020. At Promet Source, we attract talent from all over North America and the world, so we had a bit of a head start navigating remote work requirements. We were still mindful though, every day, of the many ways that Covid-19 was having an impact on our teams and our clients.  - Tue, 24 Nov 2020 18:49:33 +0000 + Tue, 24 Mar 2021 18:49:33 +0000 diff --git a/tests/src/Functional/ReaderTest.php b/tests/src/Functional/ReaderTest.php index e5bed2b..931b104 100644 --- a/tests/src/Functional/ReaderTest.php +++ b/tests/src/Functional/ReaderTest.php @@ -59,7 +59,7 @@ class ReaderTest extends BrowserTestBase { /** * {@inheritdoc} */ - protected function setUp() { + protected function setUp(): void { parent::setUp(); try { @@ -91,7 +91,7 @@ class ReaderTest extends BrowserTestBase { 'name' => 'Reader', 'pass' => 'reader' ]; - $this->drupalPostForm(NULL, $edit, 'Log in', [], 'user-login-form'); + $this->submitForm($edit, 'Log in', 'user-login-form'); $assert_session->addressEquals('reader'); $assert_session->responseContains('Logout'); $assert_session->responseContains('Aggregator'); @@ -105,20 +105,22 @@ class ReaderTest extends BrowserTestBase { 'name' => 'administrator', 'pass' => 'admin' ]; - $this->drupalPostForm(NULL, $edit, 'Log in', [], 'user-login-form'); + $this->submitForm($edit, 'Log in', 'user-login-form'); $feed = [ 'title[0][value]' => 'Test feed', 'url[0][value]' => Url::fromRoute('reader.test.feed', [], ['absolute' => TRUE])->toString(), ]; - $this->drupalPostForm('aggregator/sources/add', $feed, 'Save'); - $this->drupalPostForm('admin/config/system/cron', [], 'Run cron', [], 'system-cron-settings'); + $this->drupalGet('aggregator/sources/add'); + $this->submitForm($feed, 'Save'); + $this->drupalGet('admin/config/system/cron'); + $this->submitForm([], 'Run cron', 'system-cron-settings'); $this->drupalGet('reader'); $page->clickLink('Logout'); $edit = [ 'name' => 'Reader', 'pass' => 'reader' ]; - $this->drupalPostForm(NULL, $edit, 'Log in', [], 'user-login-form'); + $this->submitForm($edit, 'Log in', 'user-login-form'); $this->drupalGet('reader/timeline/reader/aggregator'); $assert_session->responseContains('All feeds - page 1'); $assert_session->responseContains('All of us in the Open Source CMS world are asked'); @@ -126,6 +128,12 @@ class ReaderTest extends BrowserTestBase { $assert_session->responseContains('All feeds - page 2'); $assert_session->responseNotContains('All of us in the Open Source CMS world are asked'); $assert_session->responseContains('We are currently planning for Drupal core to drop support for Internet Explorer'); + + // Search. + $this->drupalGet('reader/search', ['query' => ['keyword' => 'Droptica', 'module' => 'reader']]); + $assert_session->responseContains('Search - page 1'); + $assert_session->responseContains('Droptica: Users, Roles and Permissions'); + $assert_session->responseContains('Drupal allows you to manage access from the admin panel'); } }