This issue is posted on GitHub
/*-- Fix breadcrumb arrow going to the top --*/ /*-- the first icon in breadcrumbs is at the top caused by below --*/ /* http://localhost/media/gantry5/engines/nucleus/css-compiled/joomla.css:206 [class^="icon-"], [class*=" icon-"] { margin-right: .25em; line-height: 14px; } /* http://localhost/media/jui/css/icomoon.css:17 [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; *margin-right: .3em; line-height: 14px; } /* http://localhost/templates/g5_helium/custom/css-compiled/helium_18.css:26 font-size: 1rem; line-height: 2; } */ /* Fix only second identifier might be needed.*/ .breadcrumb [class^="icon-"], .breadcrumb [class*=" icon-"] { line-height: 2; }
This will give you a standard horizontal DIV menu.
/* Horizontal DIV menu */ /* removes the vertical seperators */ .moduletable .nav.menu.nav-pills { padding-bottom: 0; /* border: 1px solid #e0e0e5; - white border */ border: none; } /* Corrects Spacing */ .moduletable .nav.menu.nav-pills li { margin-bottom: 0; margin-right: 0.625rem; border-bottom: none; }
Make the menu thinner (ideal for top-bar menus)
/*-- Make Nav Pills Menu Thinner --*/ /* Remove padding from menu wrapper */ .moduletable .nav.menu { padding: 0; } /* Remove the padding at the bottom of the <li> */ .moduletable .nav.menu li{ padding-bottom: 0; } /* remove margin and padding from the link */ .nav-pills > li > a { padding-top: 2px; padding-bottom: 2px; padding-right: 2px; padding-left: 2px; margin-top: 2px; margin-bottom: 2px; margin-right: 2px; line-height: 10px; }
/* Gantry changes the link and background colour when the link is selected - this corrects that */ .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: inherit; background-color: inherit; }
/* Add space between icon and text for the link item */ .nav-pills .fa::before { margin-right: 5px; }
/* when screen is too small, center the menu and prevent going under the hamburger */ @media only all and (max-width: 47.938rem) { #g-top-bar .g-content { text-align: center; /* padding: 0.45rem; */ } }
/* style <li> items */ .nav-pills li a, .nav-pills li a:hover, .nav-pills li a:focus { font-size: 1.1rem; font-weight: bold; /*white-space: normal; overflow-wrap: break-word; word-wrap: break-word; word-break: break-all;*/ }
on the target
Currently Sections in Gantry, adding, removing, moving and to some extent the styling has to be done manually. Some Preconfigured Sections can has some of their CSS styling set in the admin area under ‘Section Styles’ on the Styles page.
This process outlines how you can manipulate or style the Sections as you want.
Create your own Outline that you can alter which will leave the core files alone and mean your changes will not get wiped out upon update. You need to do this no matter how you want to manipulate sections.
Changing the outline preview image is a useful thing to do by quickly showing the end user what the layout will be like.
Custom Image
We now have a template file that we can alter as needed but you should just read these notes before continuing
Using the example we created above, look at the 2 files
Looking at the layout.yaml there are 2 areas where sections are referenced, we only need to alter 1 as Gantry creates the other.
At the top there is the 'layout:' section and here you add a reference where you want to put your section, we will call our new section ‘testsection’. You need to put this reference where you want the section to appear. Refer to the Gantry documentation for further information.
The 'structure:' section at the bottom will be populated by gantry when you save the layout in the gantry admin. You can write this in manually but why bother if Gantry will do it. The 'structure:' is just styling information for the section
Don’t Use Tabs
Examples
## An empty testsection layout: /testsection/: { } ## testsection with a branding particle layout: /testsection/: - - branding-2200
Once you have made your changes, save the text file and browse to the layout page of the ‘Helium – Test’ outline and you should see your new section.
This is by far the easiest method of stying the section. The section id is always the same as the section name with ‘g-‘ prepended:
<section id="g-testsection">…</section>
So you would just use a the custom.scss for adding either CSS or SCSS styling the element as normal. This file should be placed at g5_helium/custom/scss/custom.scss and it will get parsed by gantry
.g-testsection{ background-color: red; }
If you style by this method you do not needs to style via the admin method shown below but you can mix and match however you want.
When designing a template for the end user you might like to configure the Gantry admin to allow the user to edit the new section’s settings just like the others in the backend rather than a text file. This takes a little more effort but is fairly easy to achieve.
// Test Section @import "helium/sections/testsection";
Style settings that are configured in Gantry admin can also be subject to Preset Styles where you can quickly change colour schemes. These settings work as long as you have not configured any overrides in the style settings and you allow the presets to be inherited. Only the ones where you have set to specific values will not be affected.
The sections you have created will not have any settings configured in the when using the Preset Styles. This is not a problem as they still work as expected.
You cannot override the g5_helium/gantry/presets.yaml , you would need to edit it directly which is not advised.
https://github.com/gantry/gantry5/issues/306 - the issue is logged at GitHub
When you have removed sections from the Helium template you will still have the section configs in the Gantry admin. This is how to remove them without altering core files of your Gantry template. These instructions use 1 example section but you need to do it for all sections you want to remove.
I will be using the Above Section as an example.
/above/: { } or it might look like /above/: - - custom-4582
above: type: section attributes: boxed: ''
// Above @import "helium/sections/above";You can in theory override the section SCSS files with an empty file which should have the same effect but it is not a preferred option as you get loads of files you don’t want.
These are not used all that often in basic sites but I will show you an example. Without a clear example this process can be tricky and the only file involved is listed below. I thinks a nested section's primary role is to allow you to specify section width such as a left and right column.
Nested Sections shown on the layout page
You can see that there is an area called 'Container' and this holds the nested sections (Content-left, Mainbar, Content-right).
Nested Sections Yaml
I have only included the section shown above. Dont forget the indentations are done by spaces and not tabs
/content-top/: - - position-position-6933 /container-main/: - - 'content-left 25': - - position-position-4734 - 'mainbar 50': - - position-position-2880 - - system-messages-7485 - - system-content-1587 - - position-position-8425 - 'content-right 25': - - position-position-3949 /content-bottom/: - - position-position-8044
How To
Just use the format above. I am not sure how to describe the exact syntax but 2 spaces is the indentation size you can see in the example above, which works.
Override System Outlines
Gantry comes with outlines for some system pages
You need to override these and configure them how you wish because they probably will not fit in with your new layout. Things will still work if you do not. Use the Gantry Admin to make these changes.
For some reason sections are referenced in the following files that are not directly part of the outline layout.
I don’t think I need to alter any of these for my options above but just incase I have listed them here.
Now I have created my new layout with my new admin configurations (optional) I want to make it the ‘Base Outline’. You do not have to do this but it probably is better if you are going to distribute the template.
NB I should just be able to copy my new theme over the top of the /default/ , but be aware that the other outlines might stop working properly?
This article was put together for a reference manual to all of the TinyMCE settings and what they mean in real life. I nver found one example with everything configured and labelled amking developing with TinyMCE difficult so I decide to make one. It is always easier to remove setting than add them. For those who will say there is a an online manual for TinyMCE, there is, but this is difficult as a newbie to use.
Once you have your editor up and running I agree the online manual is excellent as a reference guide, my article bridges the gap.
General Plugin notes
Excluded Plugins
These plugins have been excluded from my examples for the reasons listed.
'entity_encoding' setting notes
This option controls how entities/characters get processed by TinyMCE. This setting can be quite confusing and it controls what characters are escaped or converted by TinyMCE. This keeps documents looking correct and can prevent some hacking opportunities.
The official documentation is here: TinyMCE | Content Filtering | entity_encoding
This option controls how entities/characters get processed by TinyMCE. The value can be set as shown in Encoding Types below. You can also mix named and numeric by setting this to "named+numeric" this way it will produce entity names of the ones found in the configured entities and numeric entities for other entities.
The base entities < > & ' and " will always be entity encoded into their named equivalents. Though ' and " will only be encoded within attribute values and < > will only be encoded within text nodes. This is correct according too the HTML and XML specs.
There are a few settings
'valid_elements' / 'extended_valid_elements' setting notes
Custom Packages
You can build your own custom package with only the plugins you want built into a single file. This reduces file requests and can speed load times up.
By trial and error I discovered I did not save much file space by only including the plugins I wanted so i just made a custom build with all plugins inlcuded and 'combine all js files' enabled (just leave everything selected). This also has the added beneifit of making it much easier to turn plugins on or off just by using the config file.
Create a customized build with only the features you need.Make TinyMCE even smaller and tailored on your project. - TinyMCE | Build Customizer
This is an excellent way of preventing empty forms being entered with a visual warning just by adding a CSS class to the relevant <textarea>.
The following code adds a red border to a TinyMCE editor window if it is empty when the form is submitted and also prevents the form from being submitted (POST'ed)..
You need to add this code in to your tinymce.init statement as in the examples on this page and add the class wysiwyg-checkforcontent to the relevant <textarea>.
Some configurations of TinyMCE add in <p> </p> when the editor has no content. This is compensated for and is therefore still classed as empty by the code below.
editor.on('submit', function(e) { var placeholderElement = editor.getElement(); var testClass = "mceCheckForContent"; if( placeholderElement.classList.contains(testClass) && (editor.getContent() === '' || // This section might not be required on newer versions on TinyMCE and only when padding empty tags is enabled for <p> and <div> editor.getContent() === '<p><\/p>' || editor.getContent() === '<p> <\/p>' || editor.getContent() === '<div><\/div>' || editor.getContent() === '<div> <\/div>') ) { editor.getContainer().style.border = '3px solid red'; return false; } });
You need to include this javascript file on every page you want to use the editor.
<script src="/js/tinymce/tinymce.min.js"></script>
The following example configurations will enable TinyMCE with most of it's functions enabled. The Basic config will use all default settings whereas the Full config has all of the main options pre-configured play about with. The QWcrm config is a real life example of a config file that I use in my software QWcrm.
Basic
This is the least amount of code required to get TinyMCE to work with most of its Free Plugins, Toolbar Buttons and Context Menu Items enabled. All settings are default.
tinymce.init({ selector: 'textarea', toolbar: [ 'newdocument undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | outdent indent | bullist numlist blockquote hr charmap insertdatetime | help', 'styleselect formatselect fontselect fontsizeselect | searchreplace spellchecker visualblocks visualchars | removeformat', 'subscript superscript strikethrough | forecolor backcolor | ltr rtl | link unlink anchor | table image media | nonbreaking pagebreak toc codesample template emoticons', 'cut copy paste | save restoredraft print | preview code fullscreen' ], contextmenu: 'cut copy paste | image | inserttable | cell row column deletetable | link', plugins: [ 'advlist anchor autolink autoresize autosave charmap code codesample colorpicker', 'contextmenu directionality emoticons fullscreen help hr image imagetools importcss insertdatetime', 'link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace', 'spellchecker tabfocus table template textcolor textpattern toc visualblocks visualchars wordcount' ] });
Full
This is a config file with most of its FreePlugins, Toolbar Buttons and Context Menu Items enabled. Most settings are configured, the rest are default.
If you do not need anything or do not know what it is you can just remove it or coment the code out.
/** * @package QWcrm * @author Jon Brown https://quantumwarp.com/ * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html */ tinymce.init({ // https://www.tinymce.com/docs/ - TinyMCE Documentation // NB: There are many more options not covered here, these are just the main ones. // NB: Based on TinyMCE 4.7.12, apart from the mobile section should work on old versions as-well //// Integration and Setup //// // This option allows you to specify a CSS selector for the areas that TinyMCE should make editable. //selector: 'textarea', // Select all textarea //selector: 'textarea.editme', // Select all textarea with the class editme selector : 'textarea:not(.mceNoEditor)', // Select all textarea excluding the mceNoEditor class // This option allows you to specify a URL based location of plugins outside of the normal TinyMCE plugins directory. TinyMCE will attempt to load these as per regular plugins when starting up. external_plugins: { 'testing': 'http://www.testing.com/plugin.min.js', 'maths': 'http://www.maths.com/plugin.min.js' }, // On Submit if TinyMCE Editor is empty and has the class "wysiwyg-checkforcontent" on its placeholder, dont submit the form and put a red border around it setup: function(editor) { editor.on('submit', function(e) { var placeholderElement = editor.getElement(); var testClass = "mceCheckForContent"; if( placeholderElement.classList.contains(testClass) && (editor.getContent() === '' || // This section might not be required on newer versions on TinyMCE and only when padding empty tags is enabled for <p> and <div> editor.getContent() === '<p><\/p>' || editor.getContent() === '<p> <\/p>' || editor.getContent() === '<div><\/div>' || editor.getContent() === '<div> <\/div>') ) { editor.getContainer().style.border = '3px solid red'; return false; } }); }, //// Editor Appearance //// theme: 'modern', // This option allows you to specify the theme that TinyMCE should use. The default theme included with TinyMCE is named "modern". skin: 'lightgray', // This option allows you to specify the skin that TinyMCE should use. The default skin included with TinyMCE is named "lightgray" content_css: '/css/editor.css', // This option enables you to specify a custom CSS file that extends the theme content CSS. This CSS file is the one used within the editor (the editable area). min_height: 500, // This option allows you to set the minimum height that a user can stretch the entire TinyMCE interface (by grabbing the dragable area in the bottom right of the editor interface) when using the modern theme. min_width: 500, // This option allows you to set the minimum width that a user can stretch the entire TinyMCE interface (by grabbing the dragable area in the bottom right of the editor interface) when using the modern theme. height: 300, // Set the height of the editable area in pixels. Note that this sets the height of the editable area only. It does not include the space required for the menubar, toolbars or status bar. width: 300, // Set the width of the editor in pixels. max_height: 500, // This option allows you to set the maximum height that a user can stretch the entire TinyMCE interface (by grabbing the dragable area in the bottom right of the editor interface) when using the modern theme. max_width: 500, // This option allows you to set the maximum width that a user can stretch the entire TinyMCE interface (by grabbing the dragable area in the bottom right of the editor interface) when using the modern theme. resize: false, // This option gives you the ability to disable the resize handle or set it to resize both horizontal and vertically. statusbar: false, // This option allows you to specify whether or not TinyMCE should display the status bar at the bottom of the editor. elementpath: false, // This option allows you to disable the element path within the status bar at the bottom of the editor. branding: false, // This option allows you to disable the "Powered by TinyMCE" branding. menubar: 'file edit insert view format table tools', // This option allows you to specify which menus should appear and the order that they appear in the menu bar at the top of TinyMCE. (true/false/'list'). removed_menuitems: 'newdocument', // This option allows you to remove items from TinyMCE's drop down menus. // Toolbar Buttons - This option allows you to specify the buttons and the order that they will appear on TinyMCE's toolbar. toolbar: [ 'newdocument undo redo | bold italic underline | alignleft aligncenter alignright alignjustify | outdent indent | bullist numlist blockquote hr charmap insertdatetime | help', 'styleselect formatselect fontselect fontsizeselect | searchreplace spellchecker visualblocks visualchars | removeformat', 'subscript superscript strikethrough | forecolor backcolor | ltr rtl | link unlink anchor | table image media | nonbreaking pagebreak toc codesample template emoticons', 'cut copy paste | save restoredraft print | preview code fullscreen' ], //// Content Filtering //// schema: 'html5-strict', // The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML.(html5, html4, html5-strict) entities: '160,nbsp,173,shy', // This option contains a comma separated list of entity names that is used instead of characters. Odd items are the character code and even items are the name of the character code. entity_encoding: 'raw', // This option controls how entities/characters get processed by TinyMCE. (raw(UTF-8)/named/numeric) forced_root_block: 'p', // This option enables you to make sure that any non block elements or text nodes are wrapped in block elements. valid_elements: '', // The valid_elements option defines which elements will remain in the edited text when the editor saves. You can use this to limit the returned HTML to a subset. extended_valid_elements: '#p|hr[id|title|alt|class|width|size|noshade]', // This option is very similar to valid_elements. The only difference between this option and valid_elements is that this one gets added to the existing rule set. #p will pad empty <p> tags with This can help keep HTML structure. //This option instructs the editor to remove specific elements when TinyMCE executes a cleanup. invalid_elements: 'iframe,script,style,applet,body,bgsound,base,basefont,frame,frameset,head,html,id,ilayer,layer,link,meta,name,title,xml', //// Content Formatting //// fontsize_formats: '8pt 10pt 12pt 14pt 18pt 24pt 36pt', // This option allows you to override the font sizes displayed in the font size select box using a space or comma separated list of font sizes //// Spelling //// browser_spellcheck: true, // This option configures TinyMCE to use the browsers native spell checker. //// Localization //// directionality: 'ltr', // This option allows you to set the base direction of directionally neutral text (i.e., text that doesnt have inherent directionality as defined in Unicode) within the editor. language: 'en_US', // This option allows you to specify the language that TinyMCEs user interface will appear in. That is, the toolbar buttons and menu items. //// URL Handling //// document_base_url: '/quantumwarp/', // This option specifies the base URL for all relative URLs in the document. The default value is the directory of the current document. relative_urls: true, // If this option is set to true, all URLs returned from the MCFileManager will be relative from the specified document_base_url. remove_script_host: false, // If this option is enabled the protocol and host part of the URLs returned from the MCFileManager will be removed. This option is only used if the relative_urls option is set to false. //// Plugin Settings //// // Autosave Plugin autosave_restore_when_empty: false, // This option enables you to specify if TinyMCE should automatically restore the content stored in local storage when the editor is empty on initialization. // Code Plugin code_dialog_height: 200, // This configuration option sets the internal, editable area height of the code dialog box. code_dialog_width: 200, // This configuration option sets the internal, editable area width of the code dialog box. // Context Menu Plugin contextmenu: 'cut copy paste | image | inserttable | cell row column deletetable | link', // This plugin adds a configurable context menu that appears when a user right clicks in the editable area. contextmenu_never_use_native: true, // This option allows you to disable the browsers native context menu from appearing within the editor. // Import CSS Plugin importcss_append: true, // If set to true this option will append the imported styles to the end of the Format menu and will replace the default formats. // Insert Date/Time Plugin - https://www.tinymce.com/docs/plugins/insertdatetime/ insertdatetime_dateformat: '%Y-%m-%d', // This option allows you to override the default formatting rule for date formats inserted by the mceInsertDate command. - Default: %Y-%m-%d insertdatetime_formats: ['%H:%M:%S', '%Y-%m-%d', '%I:%M:%S %p', '%D'], // Allows you to specify a list of date/time formats to be used in the date menu or date select box. - Default: ['%H:%M:%S', '%Y-%m-%d', '%I:%M:%S %p', '%D'] insertdatetime_timeformat: '%H:%M:%S', // This option allows you to override the default formatting rule for times inserted by the mceInsertTime command. - Default: %H:%M:%S insertdatetime_element: true, // When this option is enabled HTML5 time elements gets generated when you insert dates/times. // Preview Plugin plugin_preview_height: 500, // This option allows you to set the height of the preview window that appears when using the preview plugin. plugin_preview_width: 500, // This option allows you to set the width of the preview window that appears when using the preview plugin. // Paste Plugin paste_as_text: true, // This option enables you to set the default state of the Paste as text menu item, which is added by the paste plugin under the Edit menu dropdown. Its disabled by default. paste_data_images: true, // This option specifies whether data:url images (inline images) should be removed or not from the pasted contents. // Table of Contents Plugin - https://www.tinymce.com/docs/plugins/toc/ toc_depth: 3, // By default headers in the content will be inspected only three levels deep, so - H1 through H3. But it is possible to change this behaviour by setting toc_depth to any number in 1-9 range (H1 - H9). toc_header: 'div', // Table of contents has a header and by default it will be marked up with H2 tag. With toc_header option you can change it to some other tag. toc_class: 'our-toc', // With toc_class you can change the class name that gets assigned to the wrapper div. Please note that you will have to alter Boilerplate Content CSS accordingly. - default = 'mce-toc' // Table Plugin // This option allows you to specify the buttons and the order that they will appear on within TinyMCEs inline contextual toolbar for tables. table_toolbar: 'tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol', //// Intialise Plugins //// // Enabled these Plugins plugins: [ 'advlist anchor autolink autoresize autosave charmap code codesample colorpicker', 'contextmenu directionality emoticons fullscreen help hr image imagetools importcss insertdatetime', 'link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace', 'spellchecker tabfocus table template textcolor textpattern toc visualblocks visualchars wordcount' ] //// Mobile //// // https://www.tinymce.com/docs/mobile/ // TinyMCE mobile supports a small subset of the toolbar items supported by the main mode. The toolbar is specified in the mobile section also. mobile: { theme: 'mobile', plugins: [ 'autosave', 'lists', 'autolink' ], toolbar: [ 'undo', 'bold', 'italic', 'styleselect' ] } });
QWcrm
This is the config file from my software QWcrm which is a nice simple setup for entering text. Only some of it'sFree Plugins, Toolbar Buttons and Context Menu Items enabled. Some settings are configured, the rest are default.
/** * @package QWcrm * @author Jon Brown https://quantumwarp.com/ * @copyright Copyright (C) 2016 - 2017 Jon Brown, All rights reserved. * @license GNU/GPLv3 or later; https://www.gnu.org/licenses/gpl.html */ tinymce.init( { selector : 'textarea:not(.mceNoEditor)', // On Submit if TinyMCE Editor is empty and has the class "wysiwyg-checkforcontent" on its placeholder, dont submit the form and put a red border around it setup: function(editor) { editor.on('submit', function(e) { var placeholderElement = editor.getElement(); var testClass = "mceCheckForContent"; if( placeholderElement.classList.contains(testClass) && (editor.getContent() === '' || // This section might not be required on newer versions on TinyMCE and only when padding empty tags is enabled for <p> and <div> editor.getContent() === '<p><\/p>' || editor.getContent() === '<p> <\/p>' || editor.getContent() === '<div><\/div>' || editor.getContent() === '<div> <\/div>') ) { editor.getContainer().style.border = '3px solid red'; return false; } }); }, elementpath: false, branding: false, menubar: false, toolbar: [ 'undo redo | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | outdent indent | blockquote hr charmap insertdatetime | help', 'bullist numlist | table | link unlink | cut copy paste | removeformat | preview code fullscreen ' ], schema: 'html5-strict', invalid_elements: 'iframe,script,style,applet,body,bgsound,base,basefont,frame,frameset,head,html,id,ilayer,layer,link,meta,name,title,xml', browser_spellcheck: true, contextmenu: 'cut copy paste | link', insertdatetime_formats: ['{$date_format}', '%H:%M:%S', '%I:%M:%S %p'], plugins: [ 'advlist autolink charmap code contextmenu fullscreen help hr insertdatetime link lists paste preview table textcolor visualchars' ] } );
The curly braces are surrounded by whitespace so the Smarty Tempalte Engine does not try and parse it.
Firstly, IANAL (I am not a lawyer)
If at the end of this you are still not sure what license you want or should use, do not publish your code publically and keep it closed source.
I have loads of software I want to release but I am still struggling to choose which open source license to use or how they work. There are so many licenses out there and everyone has their own opinion.
I’m writing this article to help me get some plain English explanations of which license to choose, when I should choose a particular license.
I will be referencing a lot of other web pages in this article because there is no point in re-inventing the wheel; all that is needed is some guidance and the holes in information filling in. I find when researching this sort of topic that sometimes you cannot find the answers to key questions because everyone assumes that you should know them. I encourage you to read the information on the other sites as this is how I learnt as well. Because I have done the research you don’t have to spend days on the internet finding all the links.
These articles will give you a broad view of open source licenses.
You need a license so people who want to use your software know what they can or can’t do and their responsibilities with it. If you do not include a license, people other than you have no right to use it and there seems to be a thing that you might be held liable.
All open source licenses have a common aspect that they protect you from liability, by clauses in the licenses, whichever you choose. Likewise if you use someone else’s software licensed via an open source license you cannot hold them liable.
If you do not use an open source license your software, if solely made by you, it is fully protected by copyright and no-one can come along and steal it or pass it of as theirs.
In regards to liability when software does not have a license (it must be a lawyer thing), if someone uses your code without permission, how is this your fault? I suspect that it is related to distribution of your code with permission and that you should have a good disclaimer and license before doing so.
Using an open source license you ensure that you are not held liable and that your software will still be free. Not all open source licenses keep software free forever, but you can choose to what extent by choosing an appropriate license.
The creative commons licenses are really made for creative works rather than code. I have seen that people have used the creative commons licenses to release software (not many) but I would not recommend it.
You can possibly use these licenses to for the accompanying assets such as images or videos within your software package.
There can be some terms that come up and seem very particular to the GPL license.
This is a glossary of terms that might pop up. The articles I have come across don’t always tell you all the terms, they just assume you know. Knowing these before you look at the licenses will help.
A ‘Dual License’ is not a ‘Split License’
This is where the copyright holder (in this case, the original developer) can release the code under let’s say, the GPL license and the MIT license at the same time. You would do this I think by releasing 2 packages with the different license attached in them and they would be classed as separate entities. I am not sure if you can dual license in the same package.
Viral license = any program/code that uses GPL code then has to be licensed under the same GPL otherwise you will be in violations of the license agreement for that additional GPL code. This license is non-revocable but only comes into play when you distribute the new package.
GPL is a viral license. When you make any derivative works that work must also be distributed under the GPL license. So the license spreads like a virus.
There are however some downsides to the GPL licenses. They are a viral license, so whenever you modify this code the new code is also licensed under the GPL. I you add some GPL code in to another software package, then that software must also be licensed under the GPL.
When combing a GPL package and a non-GPL package you must make sure that the non-GPL package’s license is compatible with the GPL license of the first software package. There is compatibility charts that can help you decide. For instance if you want to add MIT licensed code into your GPL package this is fine as the new work can be licensed under the GPL as no rights have been lost. However you cannot add a GPL work into a MIT licensed work and maintain the MIT license, it must be re-licensed under the GPL as this is the terms of the GPL (viral licence)
Links
A ‘Split License’ is not a ‘Dual License’
This is particular to the GPL family because of its viral nature (LGPL excluded of course).
This seems particular to the GPL licenses because of the issues using that license causes but I am not sure how you would apply this under other licenses but I assume it would be a similar method.
This is where you can keep your software GPL complaint for certain projects but keep the JS, CSS, images and other design media such as videos outside the scope of the GPL license.
Even though the design media is inside the same distribution media (I.e. .zip) this does not cause it to be covered under the GPL license. See notes from RocketTheme and their license terms. You can then add another license to cover those assets.
I do not know how to specify both license within the same package but I am assuming it must be done to prevent confusion.
Some people say this does not exist but there are many companies doing this and ecosystems allowing this, so as far as they are concerned this does exist.
This could potential be a very important part of the GPL when making ‘Split License’ products and also when you want to include many different libraries.
This is a mixture of links and notes because some of the notes point to specific sections on the related pages as opposed to the whole article. The rest are full articles on this subject.
These following links will described how GPL works with WordPress and covers the issue of ‘Split Licensing’.
WordPress founder Matt Mullenweg decided to get legal clarification on how the GPL should be applied when it came to templates, were they derivative works or separate works. The article Themes are GPL, too | WordPress.org goes into detail about how WordPress themes can be licensed under a ‘Split License’ and still honour the GPL license.
WordPress now enforces a 100% GPL infrastructure/community, this means the PHP code, JavaScript, CSS, images and other media that are in a WordPress package/extension must all be licensed under the GPL with no exception to allow them to be added to the wordpress.com repository.
WordPress have gone above what is legally required by the GPL because normally the CSS, images and other media would not be automatically covered by the GPL as they are classed as separate works, not a derivative work of WordPress. JavaScript’s have a special exemption in the GPL (see here).
The questions and responses here are not and should not be classed as legally binding as they are advisory or opinion and might not reflect the law exactly.
I asked the question about the split license to RocketTheme and that went as follows:
QuantumWarp
Hi,
I am looking at your products but I would just like you to clear up some license issue I do not understand. I am a Joomla user.
The RocketTheme Joomla Extension License says that all the PHP code is GPLv2 but the JavaScript, CSS and images are not covered by the GPL license which leads me to 2 questions.
1) If these assets are included in the template/extension package with GPLv2 code are they not automatically covered by the GPLv2 license? If not, which you say, can you point me to the clause in the GPLv2 license which explains this so I can better understand this.
2) On the page https://www.rockettheme.com/legal/93-rockettheme-licenses you reference "The RocketTheme Proprietary Use License (v1.3)", is this the full license? (the one paragraph)
Thanks for your time
QW
RocketTheme
1) What specifically are you looking to do with our templates? We simply don't allow for reselling or bundling of our templates, where clients download our template packages from you. If you use our themes as part of a service, which involves substantive, individual customization to each client, then that is fine.
2) Yes, this is the entire license.
Kind regards,
QuantumWarp
I am trying to find out how the JavaScript, CSS and images files are outside the scope of the GPL license when I thought if you distributed a package with GPL that all inside that package was covered by the GPL. It is just a clarification of the license and how this has come to be. No hidden motive other than that.
RocketTheme
I think it falls under this statement:
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Kind regards,
How do you attribute copyright or give attribution.
This is a common issue with GPL because it is viral, it is required to change the licensing agreement of any code it comes into contact to that of the GPL, so you need to make sure the licensing agreement of the code you are adding gives you the right to transform that licensed code into GPL licensed code. If it does not, then you cannot merge the 2 code blocks together to distribute it as one. You can however use it for your own private use with no issue as you are not distributing the code.
There are other circumstances using other licenses where you need to check their compatibility, but they are a lot easier to deal with and probably do not require compatibility charts.
Some other open source licenses are compatible with GPL because they allow the GPL to take over or they extend the rights of their license. You cannot remove rights generally, but you can add them.
The LGPL license does not really have this problem because it allows itself to be treated as a library and does not require code that uses it to become covered under the LGPL/GPL license. The LGPL code and any modifications to it are still treated as per the normal GPL terms but the GPL is not pass to the larger code package (Weak Copyleft)
Links
You chose to include specific licensing conditions on reuse. Sometimes these are called 'Copyleft'.
When people refer to Copyleft licenses they usually mean the GPL family.
When you create a derivative work you must make sure that you keep the original copyright notices in place and also include a copy of the GPL license. I have also read that you should make a note of when any of the files have been modified, I have not actually seen how you do this or if by the fact you can download the history on GitHub perhaps is enough.
Copyleft comes in two basic varieties:
Strong Copyleft: When a software project contains some of your GPL code, the project as a whole must be distributed under the GPL licence, if it is distributed. The effect of this will be that the source code and any additions will made available to the public.
Weak Copyleft: When a software project contains your LGPL code, the LGPL parts of the project and its changes must be distributed under your LGPL licence, if it is distributed. The other parts may be distributed under their own licences (Split License), even though they both form part of a larger work (aggregation) including LGPL. The effect of this will be that the source code and changes to the LGPL will be available to the public the rest of the code can stay proprietary and not be available.
Permissive software licenses are easy to use and have few restrictions on their use.
This is where hardware will stop open source software being run if it has been altered. This was pioneered by TiVo as they used open source GPL software but used hardware to stop modified copies being run on their box.
This is where you have used someone else’s code to base your new program or code.
Software cannot be patented; you can patent a method, process, etc., as long it is novel and non-obvious. This is the first thing you should know so you can understand this murky issue. Until I knew this I could not understand what everyone was on about.
OSS licenses (that I will deal with) fall in to 2 basic groups:
Mixing Licenses
These licenses give you your rights to use the software and outline your responsibilities to re-distribute them or derivatives of them. Generally speaking unless you re-distribute the code you can mix and match licenses with no issue, but things would get messy when you try and distribute them at a later date if the licenses are not compatible, so just bear this in mind.
Copyright
Generally speaking you should leave the license file in place; it does not need to be displayed within the program but a link from within in it on where to find the license. In particular a command line program when executed according to the GNU GPL license should display the fact that it is a GNU GPL program, see the Linux kernel.
You should as a general rule leave all the copyright notices in the source code files as well. I will cover this more on this issue later on.
License Libraries / Databases
These are sites have complete listings of the OSS licenses with their terms and conditions. Ideal to see what rights they give you or that you have to extend.
General Licensing Links
These licenses are very relaxed and allow you to distribute your code without liability and that your copyright information to remain in place but places no further restrictions upon the code or it’s re-use.
In general:
The MIT license currently is the most popular permissive license being used on GitHub. It is very easy to use, you can just copy the license into your software package, update the copyright info and add copyright notices to your source code files and you are done. The MIT license does not directly cover patents although some lawyers say it does by cause of the explicit terms of how the software can be distributed. According to GitHub and choosealicense.com this is the license they recommend if you want a simple and permissive license.
This license has had several variations but is regarded as being the first OSS license. This license as the MIT license has no specific patent clauses.
There are at least 3 variants of the BSD license:
Links
The apache license is a permissive license that has specific patent clauses in it. So if you are worried about patents but need a permissive license then you should use Apache 2.0, GitHub also recommends using this license if you are concerned about patents. Twitter Bootstrap uses this license and seem quite popular.
If you think you will have issues with patents I recommend looking at this license and using all of the resources in the Patents section in this article so you fully understand the rules to the patents game.
Links
These are topical links about permissive licenses and are not specific to one of the 3 I have outlined.
All the GNU GPL Licenses are Viral Copyleft licenses and are similar in what they try to achieve, but the variants have different roles. The GPL licenses are very harsh but do protect software freedom. There primary goal is to keep software free and open and to that end they are very good. The GPL only gets applies when you distribute the software and after that is non-revocable.
Technically, if I buy a theme or plugin and it’s released under the GPL, I have the right to share it with friends, make copies, and even improve it. Of course, if I improve or extend it and release it to the community, it has to also be distributed under the same license. There are certain circumstances when you can change the license but the new license must be compatible with the license that you received the code with.
Now you must understand there are different versions of most of the GPL license and that each different type has a slightly different use, so what I have mentioned above is a generalised outline.
This is the original version of the GNU GPL licenses and is no longer used
This is the most used of the GPL licenses, especially with the “or later” clause. This will be covered later.
This is the latest iteration of the GPL license. This is essential the same as the GPLv2 but with better wording for international law and several new clauses have been added to cover new threats to software freedom, in particular:
Links
This was previously known as the ‘Library GPL’. Its purpose is to keep the GPL license intact for your code but allow you to use your code as a library within another software package without requiring that package to then be licensed under the GPL license. You do however still have to release that portion of your code that is covered under the LGPL under the normal terms of the GPL.
LGPL allows the software/code to be used in a project without forcing the whole package that it is added to become GPL licensed. The normal terms of the GPL apply to this section of code only. I.e. PHPMmailer. This is ideal for libraries. I also do not think that it forces you to distribute your code, I need to check this. This is more compatible with other licenses
This GPL licenses allows the use of GPL code when it is runs as SaaS or server based where it is not possible to show the code or license, so in the spirit of software freedom the AGPL license was developed.
The GNU Affero General Public License is a modified version of the ordinary GNU GPL version 3 and is more aggressive.
It has one added requirement: if you run a modified program on a server and let other users communicate with it there, your must also allow the users to download the source code corresponding to the GPL software running there.
The purpose of the GNU Affero GPL is to prevent a problem that affects developers of free programs that are often used on servers.
Links
The Clause
"this program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.”
What is it?
This is a very powerful clause. If you release software under the GPLv2, then that is the one and only license, derivatives or further distributions can be released under (obviously the copyright holder can re-release under another license).
How to use it
So if you add this clause in to the license you are free to upgrade the software license to a later version of the GPL. This has the advantage that you can either use the current version of the GPL to increase compatibility with other open source software or select a later version which has more protections and more rights. These later versions could also have better compatibilities with other open source licenses.
Example
It not be possible to combine GPLv2 and GPLv3 software together as the licenses are not compatible, but if the GPLv2 has the “or later” clause then you can effectively re-licensed the software to GPLv3 which therefore makes the licenses compatible which then then allows them to be merged both under the GPLv3 license and you can then distribute the new package legally.
Notes
Links
These are links to comparisons of the various licenses
These are some interactive tools to help you select the appropriate license. It is most likely going to be one outlined on this page unless you have specific needs.
So now you know about the licenses on the ‘market’ so what now?
Decide what you want to do with your software, how do you want to distribute it? But in the end apart from some subtleties it comes down to:
And of course you have to consider any license that already exists on the code if you have made, if a derivative work.
New Code / Your Code
If you want your code to be used by the wider world and you are not bothered where or by whom then use one of the permissive licenses. This allows companies to use your software in proprietary software and they do not have to share the changes to your code.
If you want your software to be used but always available and those derivatives of that work must always be available then choose the GPL license. This limits who can use the software, but keeps it in the free software world forever, once it is release, it and old of its children will be free forever.
Derivative Work / Pre-existing Code
If the code is already licensed under GPL you are stuck with it unless it says “or later” and in which case you case use a later version of the license.
If the code has another license such as MIT, you can carry on using that license or you can add that code to GPL licensed software.
Generally speaking, if the software already has a license you should use that unless you need to change it for specific reasons, and if you by the license are allowed to.
Still not sure!
Choosing Links
Where do I put my copyright code, should I put it in every file, where does the license go etc...? Questions all to be answered here!
Remember license and copyright are different, so I would recommend putting the copyright notice at the top of every significant piece of code, or all files covered.
30/300 lines thing – i.e. significant code otherwise it is a bit pointless, not significant enough.
Most of these licenses say you need to leave the copyright in place. The copyright notices should be put at the top of all of your files. Check Joomla, WordPress, Joomla and Prestashop examples to see how they look. Don’t forget this is not the license file which usually should be included.
In the licenses where they say you must add a notice as to when it was changed, or even when you make loads of changes is how to apply the copyright, who owns it?
I do not think it is mandatory to add a copyright notice to the top of each code file but it asserts your rights and is particularly useful if that 1 file is taken out of context.
You should not remove copyright notices that are already there. But how would thins work if you completely re-write the file or there is not much left of the original file, surely you would own the copy right?
You can download these examples and examine the licenses to see what they look like in the real world
This is not as simple as you think as not everything that is publically viewable on GitHub is open source.
The questions and responses here are not and should not be classed as legally binding as they are advisory or opinion and might not reflect the law exactly.
QuantumWarp
Hello
Can you clarify the following point:
As far as I know that to use GitHub free, your software/code must be open source. However if you do not define any license in your code, then that code is still fully copyrighted to the author, All Rights Reserved?.
Under “F. Copyright and Content Ownership” of your terms of service:
We claim no intellectual property rights over the material you provide to the Service. Your profile and materials uploaded remain yours. However, by setting your pages to be viewed publicly, you agree to allow others to view your Content. By setting your repositories to be viewed publicly, you agree to allow others to view and fork your repositories.
So please can you tell me what happens to a repository of mine that has no defined license that is forked, what rights does the new recipient of the fork receive?
This issue is not covered in your terms of service. You even note that most of your projects are not licensed in this article.
Thanks
GitHub
Hi Jon,
As far as I know that to use GitHub free, your software/code must be open
source. [...]
So please can you tell me what happens to a repository of mine that has no
defined license that is forked, what rights does the new recipient of the
fork receive?
Great questions! It's not a requirement that projects in public repositories have any particular license or define themselves as "open source" or "open content". The Terms of Service only require that you grant others the right to view and fork the content, but you retain all other rights to your content by default.
That said, many people choose to apply an explicit license or copyright statement in order to make sure that it's clear to other users which specific rights they do or do not wish to grant. In that case, I'd strongly recommend getting in touch with a legal professional for advice about which option is most appropriate for your project.
Hope that clears things up!
Cheers,
Jack
QuantumWarp
Hi,
I would then ask that GitHub make an announcement (modal box) when anyone forks a repository that they might not be able to use it as they please, but only view it for education. You could also disable forking for repositories that do not have a license specified.
If a correct license is configured for the repo then an announcement of that license could be made upon forking of the repository of the basic terms of the license.
Currently it is possibly that I could fork a repository and illegally use the content. End users need to be made aware of this.
Most people are under the impression that all publically viewable code on GitHub is open source software that can be used as open source software things, however after the email from you below I now know that this is not the case. GitHub really needs to clear this up because it is just a matter of time before someone (not me) might take legal action for misleading people.
The forking procedure implies that you can now do what you want with the code if there is no defined license, I would re-iterate during the forking process that GitHub advise the forker that they might not have the right to distribute or use this code but only “fork it to view”, they cannot alter it (which makes forking pointless) unless a license is present, in which case GitHub can advise this during the forking process (with a modal box).
I would also go as far as to send out and email perhaps outlining this and mention this issue in your terms and conditions. Perhaps update your terms and send out the email advising people of this.
Your feedback is welcome
GitHub
Hi Jon,
Thanks for all the feedback and feature suggestions! Our team is taking these ideas into consideration (but I of course can't make any promises about if or when any particular suggestion you've made might be implemented).
In the meantime, if you do find that another user has used your code or project in a way that you did not allow, a great first step is to try contacting the user directly; in many cases, this type of thing turns out to be a misunderstanding that can be resolved by reaching out to them. If that's not possible, we follow the DMCA Takedown Policy:
https://help.github.com/articles/dmca-takedown-policy
Best,
Jack
QuantumWarp
Hi Jack,
As a follow up on forks, can you clarify the following from the page:
https://help.github.com/articles/dmca-takedown-policy/
B. What About Forks? (or What's a Fork?)
One of the best features of Git is the ability for users to "fork" one another's repositories. What does that mean? In essence, it means that users can make a copy of a project and then make changes to that copy to either push back to the main project or just keep as their own variation of a project. We call each of these copies a "fork" of the original repository, which in turn may also be called the "parent" of the fork.
GitHub will not automatically disable forks when disabling a parent repository. This is because forks belong to different users, may have been altered in significant ways, and may be licensed or used in a different way that is protected by the fair-use doctrine. GitHub does not conduct any independent investigation into forks. We expect copyright owners to conduct that investigation and, if they believe that the forks are also infringing, expressly include forks in their takedown notice. “”
Questions
If I have not specified a license, I own the copyright but by the terms and conditions of GitHub I allow users to see my code and make forks of it (public repositories). The following points are in contravention of this statement.
- This says that the user who has forked the project is allowed to keep as their own variation of the code
- This is because forks belong to different users,
- …may have been altered in significant ways, and may be licensed or used in a different way that is protected by the fair-use doctrine.
Could you just further explain these because it says that the forker owns the code and this conflicts with the notation that not all code on GitHub is opensource. Unless a license is specified the forker has no right to use the code for himself. However GitHub can say that the forker can keep and use the code for the sole purpose of reviing the code and then pushing it back to the parent repository.
I would also like the fair-use clause explained as GitHub does noto clarify this at all. Can fair-use allow people to steal my code?
Thanks
QW
GitHub
Hi Jon,
Thanks for your reply. The complex nature of your questions regarding fair use, the DMCA, and the impact they could have on your code would be best addressed by a legal professional. Unfortunately, GitHub is not in a position to offer legal advice; we can only recommend including a license in any code you make public to prevent licensing ambiguities.
Best,
Elizabeth
QuantumWarp
Hi,
With all dues respects, this is an issue GitHub has created and needs to be looked at by GitHub, not by me or my lawyer.
The answer you have given me not really good enough as I don’t think you have read my issue properly.
The things I have mentioned are created by your terms and conditions but the consequences are not covered by the said terms and conditions.
Could I ask you guys to re-look at this.
Thanks for your help
QW
GitHub
Hi Jon —
I'm on the GitHub Legal team. Elizabeth passed along your concerns to us. Thanks for the feedback.
As Elizabeth noted, GitHub cannot give you any legal advice about the consequences of your licensing choices. This is an ethical issue that unfortunately I cannot bend — as a lawyer, I represent GitHub, not you.
Reading over your message, however, I think it may suffice to say that when our DMCA policy states that "forks belong to different users" we did not intend to imply that, from a copyright or intellectual property standpoint, any rights are transferred. Rather, we intended to convey the idea that that different the fork creator has administrative control over the fork that the parent creator does not. I hope that clears up any confusion.
Cheers,
Jesse
QuantumWarp
Hi Jesse
Many thanks for this reply. I do feel that it answers the question.
My own license choice was never really the issue, but the creation of forks without a license (as a test case for raising the point).
Might I suggest that this (your response or something similar) is added to you terms of use as there seems to be some ambiguity of this issue on the internet, I have not been the only one to notice this "Grey area" and I am sure that this would clear that up for content creators and forkers who might not understand the intricacies of copyright.
I must also stress that I appreciate what GitHub does for the open source community and this feedback is only to bring to light this issue for positive gain.
Thanks
Jon
GitHub
HI Jon —
We will definitely take theses issues into consideration, both from a legal/Terms perspective as well as with respect to potential product improvements. Thanks again.
-Jesse=
Envato seems to be the leading force behind the ‘Split License’ model and as such they have documentation on how to make Templates in the correct format which I am sure they have run past their lawyers.
I am just going to go over the main points I have learned
If you own the copyright you can distribute that code under more than 1 license. Currently I do not know of the exact mechanism for this but you could create 2 zip files, each one having a different license.
These are far simpler to understand and are probably why they are getting a higher adoption that the GPL licenses. You do not need to be a lawyer to understand them. However the trade of is that they can be used by commercial and proprietary systems that are not public. These licenses do not ensure that you code of future iterations of the code will remain in the public sphere, this in its self has pros and cons.
The BSD license comes in several variants;
Over time clauses were removed from the BSD license until it was the same as the MIT license and this is one of the reasons everyone uses the MIT license as it is easy to understand and there is only 1 version to choose.
Most people use the MIT license for simple code and a permissive license but where patents are an issue then they use Apache 2.0, this is the choice that seems to be the most recommend on the internet including from GitHub and Choosealicense.com
This debate which is now over really made clear some things about the GPL license.
It was put that the themes of WordPress were not derivative works but separate works and should not be covered under the GPL. Mark Wallenburg the founder of WordPress decided to get the software foundation to examine the case and give a legal answer.
The answer that came back is, In a WordPress theme:
This gave rise to the split license. So now it has been proved that split licenses are legal and compatible with the GPL it does not fit in with Marks ethos for WordPress, so he made as a condition to upload extensions and themes to worpress.com then those extensions and templates must be 100% GPL compatible. This includes all the assets within such as CSS, JavaScript, images and more. I do not know how this would affect extensions that use other software, libraries etc... This is not a requirement of the GPL what mark has done but a WordPress thing. Drupal and Joomla openly accept extensions and templates with a split license. Evanto WordPress themes can either be 100% GPL or a ‘Split License’, the author gets to choose.
So this case study clearly deals with separate assets within a zip file or template and says that they do not automatically get covered by the GPL but can be if you choose and assuming you has the right to do this.
This ‘Split License’ is a way that some software houses can control their software distribution but comply with the open source nature of WordPress, Joomla, Drupal and more that use the open source model or specifically the GPL license.
Software cannot be patented; you can patent a method, process, etc., as long it is novel and non-obvious.
If you are worried about patents, don’t put your code into the public domain and if you decide you really need to then either use the Apache Permissive license or the GPL family of licenses (GPLv3 or equivalent) which have specific patent clauses in them.
If you are still not sure what license you want or should use, do not publish your code publically and keep it closed source. Also seek a lawyer’s advice on what to do next. Until you publish nothing has been written in stone and can be fixed.
The article should at the very least of informed you of what questions you need to ask.
My Choice for open source software:
When you are given a complex Adobe Photoshop PSD with many layers, especially one without a proper naming convention, you will have issues identifying individual layers or objects so you can export them as PNG images for re-use in other projects.
These instructions will show you how to identify specific objects or layer, slect them and then export them as a PNG image file.
This is the simplest method and is useful if you are struggling to identify the object to export.
Use this method when you need to export a logo or image as 1 file, when it has been built up using several objects in Photoshop and they are still separate objects.
There are different ways you can set this up and I will show you the best way of setting this combination up whilst still being able to use your 3rd party email address from your Outlook.com account.
I will cover using webmail, Outlook.com, Webmail and mobile phones and the different setups there.
The setup I am going to outline will remove the need to ever access your email via your 3rd party server, but obviously does require it to keep running.
Obviously for this to work you will need a Outlook.com email address that has been upgraded to the new version of Outlook.com account which supports Exchange (live and Hotmail email accounts will be ok) and Outlook 2013+ if you want to setup email in Outlook the software client.
You need to configure each item in the list below for your selected configuration. The instructions for the different options are after this section. You basically just mix and match as per the menu below to get your preferred option. I have done this way because I am not 100% which way I am going to set things up yet but at least you can figure out the best configuration for you.
Obviously for this to work you will need an Outlook.com email address that has been upgraded to the new version of Outlook.com account which supports Exchange (live and Hotmail email accounts will be ok).
This item just requires you to create an Outlook.com account with an Outlook.com email address unless you already have one.
Outlook.com uses your own server for sending email rather than sending from Microsoft servers so there will be no issue of address spoofing or your emails going into SPAM folders. To this end we need to give the email account details to Outlook.com.
Your emails will only be fetched every 10 – 15mins from 3rd Party servers, this cannot be changed. If you use IMAP the emails are not received instantly either.
Recently Microsoft upgraded all Live/Hotmail/Outlook.com to support full Exchange features with a 50GB mailbox which allows Outlook client software to take full advantage of this such as the calendar which will sync to your calendar on Outlook.com, emails rules and out of office replies
You need to have Office 2013 or later to be able to recognise Outlook.com as an Exchange server.
For these instructions I am using Outlook 2016
To Add the Exchange Account
Now we need to add your 3rd party email account into exchange. The difference is that we will have the delivery location be the Exchange .OST file. When emails are delivered to the .OST via Outlook client software it is synced up to Outlook.com and therefore all of your other devices. Emails will be sent from your 3rd party email account as normal via the Outlook client software.
You can now send and receive emails from your 3rd party email account and those emails, both sent and receive will be saved in to your Outlook.com Exchange account and synced to all of your devices. The 3rd Party email address has been set as the default email address so you might not even notice you are using an Outlook.com Exchange Account.
This option would be suitable if you just want Outlook.com to manage your email grabbing or if issues arising from both Outlook.com and Outlook client software polling your email server.
We are basically going to remove the 3rd party email account from the send/receive group preventing POP3 integration.
Do the same as above section ”Local 3rd party email send and receive (SMTP and POP3)” but make sure the internet is turned off first and then do the following.
You have now disables your 3rd party email account from receiving email so the POP3 server will never be polled by you Outlook client software but you can still send emails
The Exchange account should still be the default account. Simply set the 3rd party email account as the default.
This section needs updating when there is a method to use an alias in the Microsoft Outlook App.
This code allows you to set a background image or texture behind the content areas of a Joomlashine template. This will not work for all templates and might need some further work but it is a great starting point.
/*-- Set a background image or texture behind module positions and content --*/ /* Set Background Image - add to wiki */ #jsn-page { background: url("../custom/images/background.jpg") repeat scroll 0 0; } /* Make backgrounds transparent */ #jsn-topheader, #jsn-header, #jsn-body { background-color: transparent; } /* Remove large padding in reta content block */ #jsn-content { padding: 0; } /* Restore white to certain regions */ #jsn-topheader-inner, #jsn-header-inner, #jsn-content_inner { background-color: white; }