The connected life has these wonders. In the past week, we released AutoTweet and Joocial 8.16 to support Joomla's Custom Fields. Today, we are releasing AutoTweet and Joocial 8.17 to support two breaking news from the biggest social media outlets:

  • Twitter has expanded the tweet limit of 140 characters to 280 characters. We can already find tweets that are fully embracing the new freedom to write longer texts. We have adjusted the extensions accordingly.
  • Facebook is adding new controls to limit the content of posts to the authors. We are actively following the topic and releasing new versions to be updated with the latest news. In the previous change, Facebook mandates to keep the Open Graph Tags syncronized with Posts of content items (Changes to Facebook post publishing rules). Now, with the release of API 2.11, Facebook has added a validation to associate Pages and Domains. So, posts can only be published to Verified Domains. This control does not affect directly to the extensions, but it is a new configuration step that has been added to the authorization workflow: Facebook Link Ownership Guide.

Support of Twitter's 280 Limit and Facebook's Domain Verification

The new AutoTweet and Joocial 8.17 beta version are available in the Download Area, and the stable versions are going to be released in the next week.


Read more

Many applications are built using Webpack. Stencil provides a Webpack plugin that makes it easy to include web components that have been built using Stencil in your Webpack built application.

Please note that the Webpack plugin is not required to use web components built with Stencil in other applications. This plugin just gives you an option to use if your application relies heavily on Webpack.

Installing the Plugin

To install the Stencil Webpack Plugin in your project, use npm (or yarn) and save it as a development dependency. For example:

npm install @stencil/webpack --save-dev

Using the Plugin

Using the Stencil Webpack Plugin is a two-step process. You must import the collections you are using into your project code at some appropriate location depending on the architecture of your application, and you must update the webpack.config.js file to call the plugin which will copy the required files to the output directory for your application.

Importing the Collections

In order to use your component collections within an application, you generally have to import them in some manner. This will result in Webpack adding the appropriate Stencil loader scripting to the appropriate bundle.


In an Angular application, you should add the component collection imports to the app.module.ts file. You should also make sure you are using the CUSTOM_ELEMENTS_SCHEMA as in the following example.

import { BrowserModule } from '@angular/platform-browser';import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';import { AppComponent } from './app.component';import 'accounting-components';import 'payroll-components';import 'purchasing-components';import 'web-components';@NgModule({  declarations: [    AppComponent  ],  imports: [    BrowserModule  ],  providers: [],  bootstrap: [AppComponent],  schemas: [    CUSTOM_ELEMENTS_SCHEMA  ]})export class AppModule { }

Updating webpack.config.js

Once you have the proper Stencil loader scripts bundling with your project, you need to have the collections copied to a known location in the build output so the Stencil loader can load them as needed. This is where the Stencil Webpack Plugin is used.

Important: If you are in an Angular CLI project, you must first eject the project in order to modify the webpack.config.js file.

After installing the plugin, modify your webpack.config.js file as such:

const stencil = require('@stencil/webpack');...  "plugins": [    new stencil.StencilPlugin({      collections: [        'node-modules/accounting-components/dist/accountingcomponents',        'node-modules/payroll-components/dist/payrollcomponents',        'node-modules/purchasing-components/dist/purchasingcomponents',        'node-modules/web-components/dist/webcomponents'    ]}),

The plugin constructor takes a configuration object. At this time, the only property in this object is the collections property. A configuration object is used rather than a simple list of files in order to support the easy addition of options in the future.

The collections property contains an array of component collections you would like to use. If you only have one collection, you can specify just a string instead of an array of strings.

The component collections do not have to be installed in node-modules if you do not want to publish them to an NPM registry (though publishing them to either the public registry or to a private registry is suggested). You could, for example, install them in a web-components directory if so desired. Manually copying the component collections as such is beyond the scope of this document.

Once you have this set up, a build (npm run build for example) will copy the components to a build directory under the output directory for the build following usual Stencil conventions.

Next Steps

To date, this plugin has only been tested with an Angular application. In the future, I hope to demonstrate using this plugin to include web components built with Stencil in applications written using other frameworks such as Vue or React.

Read more

Earlier this week we took the wraps off our new developer-productivity app: Ionic DevApp. Ionic DevApp helps Ionic developers test immediately on an iOS or Android device, without installing Native SDKs or managing device profiles. Read more about the announcement on the blog and we hope you find the app a useful addition to your workflow.

DevApp was built with Ionic, and I’d like to talk a bit about how the app was built and how we used Ionic and our new Ionic Pro services to quickly iterate and ship on iOS and Android.

Early Motivation

The DevApp was initially built in-house to solve one of our own problems: we needed to move more quickly with testing some complicated native changes we were making to Ionic’s keyboard support. Considering the device environment is not the same as just testing in a simulator or a browser on device, the work had to be done through the slow process of rebuilding and deploying to device.

The DevApp was built to make our own testing in a real native device context much faster and easier. Once we got the app working for our own needs, we realized it’d be useful for everyone else, too.

Building the UI

DevApp is an Ionic Angular app using version 3.x of ionic-angular and version 4.x of Angular (at the time of this writing).

The app utilizes a split-pane UI at the core with a side menu that turns into a drawer on smaller screens, and expands to stay fixed on larger screens:

This design is achieved using this pseudo-markup:

Beyond the split pane UI, the app has a pretty simple UI based around a list of discovered services that launches in a new webview instance for each app loaded.

Fixing Launch Issues in real-time

At Ionic, we use our own products to build all of our apps, and DevApp is no exception. In fact, DevApp is one of the first to use Ionic Pro, our new service that enables Ionic developers to push updates in real-time (without needing to re-publish to the app store), track runtime errors back to TypeScript, and more.

When we pushed the big red button and published DevApp to the app store, we were faced with everyone’s worst nightmare: a fairly serious post-production bug in the app. With Pro Monitoring, we were able to track the error and, with Pro Deploy, immediately push a fix for the bug.

We’re now actively tracking issues with Monitoring and if anything comes up, pushing an update is as easy as doing a deploy in Pro.

Learn more about Ionic Pro and the Deploy and Monitoring features.

Enabling Native Support

To enable native feature support, DevApp ships with a large number of Cordova plugins (over 70, in fact, see the full list). This means that the app will only support native features that are available in the DevApp binary we ship to the app store, so we try to include a wide variety.

Ionic DevApp shares a decent amount of functionality with Ionic View, now Ionic’s external beta testing app (the original app forked into two new apps). Both apps work by providing a Cordova runtime layer to an Ionic app running in a browser environment. That means we have to do some work to enable the opened app to have access to Cordova.

On Android we proxy requests to cordova.js and the related plugin scripts to files in the DevApp bundle and stream them back. To the end-user app, it looks and feels like a full Cordova environment, but it’s proxied through our DevApp. The iOS approach isn’t quite as straightforward (relies on injecting a script at runtime) but achieves the same purpose.

Open Sourcing Ionic Discovery

One of the key pieces of DevApp is the ability to automatically detect ionic serve instances on the network. This functionality relies on a networking technique known as Service Discovery.

There are a few ways to implement Service Discovery, including Bonjour, Multicast DNS (mDNS), and UDP broadcast. While the first two techniques work really well on OS X, we failed to use them reliably on Windows, either through existing libraries or a custom implementation. Additionally, libraries available for Bonjour in particular rely on native libraries that didn’t consistently compile on certain platforms.

Fortunately, UDP Broadcast, while a bit simplistic, works reliably on all platforms and can be implemented through a pure JavaScript node library and does not rely on custom native code.

UDP Broadcast works by sending a UDP packet to a network’s broadcast address, a special address that enables a packet to be received by all network hosts on the same subnet. This is why devices using DevApp must be on the same network and the same subnet as the machine running ionic serve.

We’ve implemented this design into an open source Node library called Ionic Discover.

Dogfood Grows on You

We believe that the best way to build a great developer experience with Ionic is to dogfood it for serious projects, and be hyper critical about it in the process. The DevApp has led to a number of immediate changes, and some long term changes we can make to Ionic and the tooling around it to make it easier and more powerful to use.

Additionally, we think Ionic Pro gives developers some key benefits on top of the traditional mobile development lifecycle, and by using it ourselves we were able to fix and improve a number of parts of the service.

Please give DevApp a try, and we hope you enjoy the app!

Read more

Better Video on Mobile

Today we have an update you all have been waiting for: YOOtheme Pro 1.10. Its highlight, the brand-new Slideshow element, is based on our modern Slideshow component introduced with UIkit Beta 31 last month. But that's just the tip of the iceberg. We reworked everything related to the new Slideshow. The dotnav and the slidenav got a major design update in all existing styles, and there is a new thumbnail navigation. We also reviewed all layouts in the layout library and integrated the Slideshow to improve the user experience.

Aside from the Slideshow, the style customizer got a great update with new previews and reset options. Background videos now also work on mobile devices. There are new column options for image effects, jQuery got finally removed from YOOtheme Pro, and the list goes on and on. Let's take a closer look at all the new features.

Slideshow Element

The new Slideshow enables you to create photo and video presentations with smooth animations. The parallax effect, which literally sticks at your fingertips when swiping, is now possible for any type of content. 5 different animations, including the brand new Pull and Push, bring a modern look to your website. Besides, the Slideshow is optimized for all device sizes.

Updated Dotnav and Slidenav Styles

The Dotnav and the Slidenav got a considerable design update! They were optimized in more than 70 styles, plus the inverse. For the Slidenav we also integrated different icons. Now, the two navigations match the styles even better.

Slidenav and Dotnav Styles

New Thumbnav

In the new release UIkit Beta 33, we have added the Thumbnav that you may already know from UIkit2. The Thumbnail navigation can be used for both the Slideshow and the Switcher elements.

Thumbnav Styles

Modernized Layouts

While the brand new features and releases are great, we also care about the things we have already launched. For that reason, we have updated 8 layouts, which now include our new Slideshow element. Check out the following layouts to see it in action.

Lilian Frontpage
Lilian Our Story
Jack Baker
Copper Hill

Improved Style Customizer

The UIkit previews in the Style Customizer were also optimized. Two missing preview pages - Inverse and Theme, were added. The first one gives you a possibility to toggle between the light and the dark background and see how all components change depending on the background. The second preview displays theme specific markup, like the Page background, the Toolbar, the Section title and the Headerbar styling. The Theme preview allows you to set all the UI components specific for the theme in one place.

There is now a reset option in the overview of the Style Customizer. Unlike before, you can now see where the changes were made in the overview of the components and not only in the specific component. If needed, all modifications made in the component can be reset in the overview. This feature is very useful since you no longer need to search the component where the change was made.

The 'Save/Cancel' option is now more robust than ever. You can no longer accidentally cancel the saving process if it has already started. We have also added a spinner, which notifies you that the saving process is taking place. This, along with some changes in how the saving process is handled technically, fixes some rare bugs which were caused by unsaved changes.

Better Videos on Mobile

Another great addition to YOOtheme Pro 1.10 concerns the video element. Now you can set controls for the video element, and it can be muted. The playsinline option has been added to allow videos to play without switching to full screen on iOS devices.

Better Video on Mobile

There is now a new option of combining both Style and Video for the background of a section. Since video in the background also makes use of playsinline attribute on mobiles, we have removed the no longer needed fallback image option.

Image Effects for Columns

Another improvement of this release concerns the options for columns. We added some advanced coloring and parallax options for background images, which you already know from the section. Blend modes and overlays can now be applied to columns. This not only gives you more possibilities for image modifications, but it also ensures that the background image and the style really correspond to the overall look of your website.

New Max Width Breakpoint

YOOtheme Pro has added a max width breakpoint option in all Builder elements. This is useful if you want to create advanced layouts on mobile devices. The option was first available for texts, but now all elements can benefit from it, which makes your website even more responsive.

New Max Width Breakpoint

Goodbye jQuery!

As you may know, we have removed the jQuery dependency from UIkit Beta 31, and we made the same decision in Pro 1.10. The JavaScript library is no longer automatically loaded, making YOOtheme Pro lighter and faster. However, we have added an option to load it on request in Settings -> Advanced. Moreover, if you use jQuery in the Custom Code setting, YOOtheme Pro will detect it and load it automatically to make sure that nothing breaks.

Breaking Changes

There is one little breaking change, which we can't fix automatically. In the About layout from Juno there is a section called Team.

Click on the Row, go to the Column 1 and in custom CSS replace:

.el-column > * { padding-bottom: 550px; }
.el-column > * > * { padding-bottom: 550px; }

Repeat the same step for Column 3 since the text has the same position.

Click also on the Column 2, and in custom CSS replace

.el-column > * { padding-top: 570px; }
.el-column > * > * { padding-top: 570px; }

What's next?

As you can see, there are quite a few things that were improved. YOOtheme Pro 1.10 is a release we are very proud of, with all the new features, changes and fixes. There is no doubt that we are constantly trying to satisfy all your needs and wishes, which is why we are already working on the new theme for next month. Another huge improvement that is currently on our to-do list is a completely new comprehensive Documentation. For next year, we have planned a lot of major changes and updates! Stay posted and let us know what you think in the comments!

jQuery(function($) { var videos = $('video'), scrolled=false; $(document).on('scroll', function() { scrolled = true; }); setInterval(function check() { if (!scrolled) return; videos.each(function() { if (isInview(this)) {; } else { this.pause(); this.currentTime = 0; } }); scrolled = false; }, 25); function isInview(element, options) { var $element = $(element), $win = $(window); if (!$':visible')) { return false; } options = $.extend({topoffset:0, leftoffset:0}, options); var wl = $win.scrollLeft(), wt = $win.scrollTop(), offset = $element.offset(), left = offset.left, top =; return (top + $element.height() >= wt && top - options.topoffset <= wt + $win.height() && left + $element.width() >= wl && left - options.leftoffset <= wl + $win.width()); } });</script>

Read more

EasyDiscuss 4.0.19 Updates

About a week ago, we released a maintenance update for EasyBlog. To keep the momentum going, we would like to present you with EasyDiscuss 4.0.19 update today!

Read more

© 2019 Extly, CB - All rights reserved.