mojoPortal

 

mojoPortal 2.7

We're pleased to announce the release of mojoPortal 2.7, which has a lot feature enhancements and fixes as you will see below. We're also releasing updated versions of Form Wizard, Event Calendar Pro, Site Membership Paywall, Web Invoice, and Fund Raiser.

Where to Get It?

Head over to our GitHub Releases Page.

Highlights

  • Google Maps Fix
  • New Image Gallery
  • MySQL 8 support
  • pgSQL and SQLite support for SuperFlexi
  • Form Wizard form editing experience improvements

New Feature: Better Image Gallery

  • Beginning of a new image gallery. Currently replaces the Image Gallery (Simple Folder Version), will replace the other Image Gallery soon.
  • Uses Razor Views the same way the Blog Post List View module does.
  • Default layout (view) uses BlueImpGallery
  • Learn more here: Getting Started With The Better Image Gallery.

SuperFlexi

  • pgSQL and SQLite support.
  • Allow editing when user is in AllowedEditRoles.
  • Added "SkinVersionGuid" static token.
  • Added WebApi support for retrieving SuperFlexi data.
  • Added [dbo] to all object references in mssql scripts.
  • Added Pre/Post TokenStringWhen True/False for CheckBoxes.
  • Fixed MaxItems needing high number to work properly.
  • Fixed bug where not selecting solution would break site.
  • Fixed bug where changing Solution would cause an error condition on first click of edit link.
  • Fixed bug in MySQL data layer where Int32 dbtype was used when Guid should have been used.

Blog

  • Added optional "Default Post URL Prefix" setting. Allows for automatically placing blog posts in a URL hierarchy, e.g., some.domain/my-blog/my-first-post.
  • Added logic to Remove post from Search Index if "EndDate" is set to before current date.
  • Added logic Remove post from Search Index if "IncludeInSearch" is set to false. Previously, this was only checked when creating a post, not when editing.
  • Added logic to check for Heading control on page when UsePostTitleAsPageHeading is true. This setting would hide the blog title if the page heading was no longer on the page if the ShowPageHeading setting was set in the DB from a previous skin.
  • Added logic to allow BlogPostListModule to work in ModuleWrapper.
  • Changed post title and subtitle fields to not allow HTML. Someone actually thought this was a XSS issue but only people who could add HTML to the post body (thus able to add script) could set the title and subtitle fields. SMH…

Forums

  • Removed old inline styling on table elements
  • Standardized on "thread" vs "topic" and capitalization of other phrases/words

Survey

  • Added submission limit for authenticated users.

Shared Files

  • Added granular permissions for Roles on files and folders.

mojoPortal Core

  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added SQLite database auto creation. If SqliteConnectionString value is "defaultdblocation", mojo will copy the seed database (/data/sqlitedb/mojo-seed.db.config) to  (/data/sqlitedb/mojo.db.config). This will prevent accidentally overwriting the existing database.
  • Added page deletion confirmation dialog.
  • Added .webp to the allowed image file extensions.
  • Added WebUser.IsSkinManager method.
  • Added new control "EmbedSVGSprite" to allow easier embedding of SVGs in code.
  • Added display settings to separate settings/delete from move buttons on PageLayout buttons.
  • Added override for UIHelper.AddConfirmationDialog to allow for HtmlButton in place of WebControl. Allows for attaching Confirmation Dialogs to HTML5 button elements.
  • Added AlertPanel to allow for easier and standardized skinning of alert messages.
  • Added SelectFolder function to FileManager.
  • Added ICustomField, Options, Attributes, and DropDown to ModuleSettings. Makes adding dropdown options easier, removes need for special controls for those types of fields. ICustomField is like ISettingControl but it has ability to add additional Attributes to the control. These attributes can be used by the custom control in any way the developer wants. They are also used by the TextBox, CheckBox and DropDown field types in the ModuleSettings.
  • Added API Key functionality to Google Maps.
  • Added iframe embed option for Google Maps, enabled by default. Doesn’t require an API Key.
  • Added SetupFooter options.
  • Added CSV_Splitter to MSSQL datalayer. Will create a list of SqlDataRecord from a list of values. This new list is used to populate a TVP (Table-Valued Parameter) in a stored procedure.
  • Added StringHelper.IsIn(). string extesion to easily check if string is in an array. Example:
    string color = "blue";
    string[] colors = {"blue", "green", "red"};
    if (color.IsIn(colors))
    {
        // do something
    }
  • Added Set_Root_Cookie function to mojocombined.js.
  • Added .woff2 to web.config.
  • Added UIHelper.GetDictionaryFromString(). Converts a semicolon and pipe delimited string to a string,string dictionary.
  • Added XMLHelper.GetKeyValuePairsAsStringBuilder and XMLHelper.GetKeyValuePairs.
  • Added Browse Files permission to allow users to use the file manager but not make any changes or upload new files.
  • Changed location of "Design Tools" to Admin Menu.
  • Changed to Newer/prettier/better/fantastical markup for error page.
  • Changed UIHelper.AddConfirmationDialog to allow for more than one onclick call.
  • Changed the rendered order of CssClass and ExtraCssClasses on BasePanel. (extra is now second).
  • Changed RolesThatCanDeleteFileInEditor to always include ContentAdmins.
  • Changed FriendlyUrl Suggestions to use optional url prefix.
  • Changed permissions to allow ContentAdmins to delete in File Manager.
  • Changed permissions to allow ContentAdmins to see FileManager link.
  • Cleaned up System Log page when logging to database.
  • Cleaned up controls in built-in features, added SkinIDs to buttons, converted panels to FormGroupPanel.
  • Fixed some capitalization issues in MySQL db scripts.
  • Fixed "Skin Manager" CSS editing to allow editing CSS files in sub-directories of a skin.
  • Fixed OpenID (janrain) issue preventing logins.
  • Fixed bug where Site Search Module wasn’t using the feature filter from the module settings.
  • Fixed caching issue in FileManager by disabling caching. This was causing issues with the FileSystemServiceToken which would prevent users from using the File Manager.
  • Fixed reference to non-existent 404notfound.aspx file in web.config
  • Fixed FileManager for folder-based multi-tenancy.
  • Fixed folder url recognition in folder-based multi-tenancy. No longer need to create folder and add empty default.aspx file.
  • Fixed saving of FirstName and LastName on create in ManageUsers.aspx
  • Fixed buggy regex for CustomCssClass settings in several modules. Consecutive spaces in submitted input were causing the regex validation to lockup.
  • Removed DetectPageNotFoundForExtensionlessUrls to fix issues with Routing (new file manager).
  • Removed GreyBoxIsLoadedFromSkin in code and user/web.config.
  • Removed LessUtility from DesignTools.
  • Removed unused images and css from data/style.
  • Removed unused icons and images from data/SiteImages.
  • Removed more corner rounding controls.
  • Removed FeatureIcon/ModuleIcon and PageIcon settings.
  • Removed Twitter and Flicker modules that no longer work due to drastic changes in service APIs.
  • Replaced several hard coded instances of image file extensions.
  • Replaced long string concatenation with string interpolation (not complete, work-in-progress).
  • Replaced ugly icons used on PageLayout for moving content with FontAwesome 5 SVG sprite.
  • Replaced a lot of the old ugly icons used throughout project with simplified icons. Planning full replacement of these icons with something else later.
  • Standardized Authentication Checks and Access Denied redirects. Had about 10 different process flows before.
  • Standardized use of NonCmsBasePage across admin page.

Web Store 7.5.0.1

Web Store can be downloaded here.

  • REQUIRES mojoPortal 2.7
  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added proper SkinID to buttons so they will match styling of the rest of the site
  • Removed the now defunct Google Checkout
  • UI Improvements, including several new Display Settings

Form Wizard 2.7

Form Wizard can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.

  • REQUIRES mojoPortal 2.7 (version numbers being the same is just a coincidence).
  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added a lot of Display Settings.
  • Added SkinIDs to submit and previous buttons.
  • Added Question Alias to divs wrapping each row in rendered form. Allows for selecting specific questions by targeting data-question-alias in script.
  • Changed field/question editing to use pop-up modals. Framework based skins and skins with Bootstrap 3.7 work with this automatically. For others, see this.
  • Changed Slider question to use HTML Slider Input by default.
  • Changed Slider Range inputs to textboxes.
  • Changed FormUtils.GetAttachments to public so it can be used in SubmissionHandler.
  • Changed HTML Question to use mojoEditor (will use whatever editor is default in mojo).
  • Changed ugly icons used for moving question options to FontAwesome.
  • Fixed Question disappearing when editing.
  • Fixed submit buttons being disabled when using pages.
  • Removed SliderMaxRangeLimit option.

Event Calendar Pro 3.5

Event Calendar Pro can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.

  • REQUIRES mojoPortal 2.7.
  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added "Use iframe Embed for Map" option for Google Maps.
  • Added a lot of Display Settings to help with skinning.
  • Fixed issue where customer company input was not showing on ticket purchase form when "Show Address on Free Event Registration" was disabled.
  • Moved ticket options to separate tab in event editor.
  • Removed Bing Map support.
  • Renamed "Sales Management" to "Administration".

Web Invoice 1.8

Web Invoice can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.

  • REQUIRES mojoPortal 2.7.
  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added optional Invoice Fee.
  • Added Email CC option.
  • Added Email BCC option.

Fund Raiser 1.3

Fund Raiser can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.

  • REQUIRES mojoPortal 2.7.
  • Added support for MySQL 8 and SSL connections to MySQL servers.
  • Added a lot of Display Settings to help with skinning.
  • Removed CornerRounder Controls

Site Membership Paywall 1.1

Site Membership Paywall can be purchased in the store. If you already own a license, go to My Profile under your avatar on the mojoPortal site to download the latest version.

  • REQUIRES mojoPortal 2.7.
  • Added support for MySQL 8 and SSL connections to MySQL servers.

mojoPortal 2.6

mojoPortal 2.6

Today, we're pleased to announce the release of mojoPortal 2.6. We had planned on releasing this version much sooner but we kept adding features! In the future, we're planning on releasing about once per month. Larger features will take more time but our community shouldn't wait for smaller enhancements.

With this release, we're introducing SuperFlexi and the Blog Post List modules. We also have a lot of enhancements and new features for existing modules. Finally, we've made some improvements to Framework and we're releasing a new free skin called "Scout", which can be downloaded from the mojoSkins project.

Where to Get It?

Head over to our GitHub Releases Page.

SuperFlexi

The SuperFlexi module is intended to serve as an easy templating system that works as a go-between for front-end developers and users. Developers can easily create "Solutions" that determine, to a large extent, the module's uses; controlling both what kind of input users can store in the database and what markup is created on the page. Users can then simply select a "Solution" in the module settings, and create their content with straightforward easily-understood forms, which will then be rendered as determined by the developers defined markup.

SuperFlexi aims to give end users much easier control over their content, even when that content might normally be quite complicated (as in the case of sliders, tables, structured or gridded HTML, and many other things). Possible uses for SuperFlexi are virtually limitless and we're really excited to be adding it as a core module in mojoPortal 2.6.

With mojoPortal 2.6, we're including 8 solutions; Accordion, Banner Slider, Icon Blocks, Image Blocks, Personnel List, Quick Links, Social Media Links, and Tabs. Each of these is demonstrated on the mojoPortal Demo Site. Please note, SuperFlexi does not currently support SQLite and PGSQL. We should have support for those database platforms in a couple of weeks.

To learn more about SuperFlexi, check out the documentation. We've also created a new Forum, just for SuperFlexi.

Blog Post List Module

So, for a very long time, the official guidance for showing a list of blog posts on pages other than the page your blog is on was to use the Feed Manager to consume your blog's RSS Feed. This meant that the Feed Manager had to make an http(s) connection back to your site, consume the feed, cache the feed contents in the database, and then query the database for the cached contents. Granted, the connection and subsequent caching only happened on a set interval but it was very unnecessary. We decided to cut out the middle-man (Feed Manager) and create a module which connects directly to a chosen Blog module and displays the posts. We went a step further by creating a Razor View Engine for this new module. Yes, you read that right, Razor. You can create Razor views to control the display of this new module.

To learn more about the Blog Post List module, head over to the documentation.

Blog Updates

We spent some time on the Blog and besides the wonderful new Razor-enabled Blog Post List, we have added Post Featured Image, Blog Featured Post, and automatic Meta Content creation for Facebook, Twitter, and Schema.org.

Post Featured Image

You can now easily add a featured image to each of your blog posts. This image will be used in the meta elements added to the page for Facebook, Twitter, and other social media outlets. The image is also treated a bit special by the Blog in that it is shown at the top of posts. More on the Post Featured Image.

Featured Post

This feature allows you to set a single post in your blog as "Featured". That post will always be at the top of the post list, even when using the Blog Post List module. More on the Blog Featured Post.

Automatic Meta Content Creation

Sharing posts on social media is a lot easier now because the special meta content markup that is necessary for sites like Twitter and Facebook to show correct titles and post images is now automatically added when you create a post. You can even edit the meta content that is created by editing the post and clicking the "Page Meta Data" tab (we're gonna change that to "Post Meta Data" in the next release).

Other Blog Updates

  • Added Display Settings for the Blog module to allow for easier skinning via CSS classes
  • Updated to actually move the blog navigation in markup instead of changing places with CSS * floats for easier styling
  • Cleaned up a lot of the default markup
  • Panels with no child elements will no longer be rendered
  • Added option to include comment body in comment notifications
  • Added SkinID="Blog" to CommentsWidget
  • Removed "Feed Links". These were links to old MSN, Yahoo and other defunct feed managers.
  • Added option to allow Post Title to be used as Page Heading when the PageHeading (or PageTitle) control is used in the layout.master for the skin

ASP.NET 4.6.2

mojoPortal now requires ASP.NET 4.6.2, which was released in August of 2016. Most hosting providers already support 4.6.2 so you should be fine upgrading your site. If your host doesn't support it and you purchase a hosting plan with i7MEDIA, we'll move your site for free.

TLS 1.2

mojoPortal will now enforce using TLS 1.2 for outgoing connections. This is important for connections to payment processors like Authorize.Net, WorldPay and PayPal.

Site Settings

The Site Settings page has a lot of options for configuring your site. We're actually working on moving more stuff from the web.config to the UI so it'll be easier to configure your site. Knowing that we are going to be adding even more to Site Settings, we implemented a few changes and reorganized some things to make using the Site Settings page easier. In the future, we plan on breaking this single page up into several smaller and more task oriented pages. In this release, you'll notice the following:

  • "Site Title" field moved to the General tab
  • "New Site" link removed (to add another site, go to Administration > Site List)
  • Skin options grouped on the General tab
  • Content Editor options grouped on the General tab
  • Registration options grouped on the Security > Main tab
  • User Account options grouped on the Security > Main tab
  • "Avatar System" option moved to User Account group under Security > Main tab
  • Password options grouped on the Security > Main tab
  • Security > OpenID tab renamed to "3rd Party Auth"
  • OpenID options grouped on the 3rd Party Auth tab
  • Windows Live options grouped on the 3rd Party Auth tab
  • "Host Name Mapping" and "Folder Name Mapping" moved to a single tab called "Site Mappings".
  • "SMTP Settings" tab renamed to "Mail Settings"
  • "Mail Settings" tab is always visible with information on how to enable the fields there. New sites will, by default, use this area for SMTP settings. You can enable this on your site by following the instructions here.
  • "Default Email From Address" and "Default Email From Alias" moved to "Mail Settings" tab
  • Reordered Recaptcha Site/Secret keys to match order on Recaptcha site
  • Added several contextual notes throughout the Site Settings page

Change Log

This change log isn't exhaustive because a lot of changes are already listed above. If we didn't list it above, it should be listed below.

Core

  • Updated mojoPortal to ASP.NET 4.6.2 and C# 7
  • Updated mojoPortal source code to use latest NuGet package management
  • Added RazorBridge method to allow use of MVC Razor Templating in Web Forms controls
  • Added MVC HTML Helper for internal Avatar and Gravatar use in Razor templates
  • Added Link control for inside/outside markup of the link
  • Added AutoEscapeStringForCsv method for exporting data in CSV format
  • Updated Gravatar in Forums to link to mojo user profile by default
  • Fixed File Manager/Page Picker for folder sites and sites running in a virtual directory
  • Moved First Name and Last Name fields to the General tab in the User Profile.
  • Added option to include comment body in notifications
  • Added ExportDynamicListToCSV method to ExportHelper
  • Added ImportHelper with GetDynamicListFromCSV method
  • Removed calls to jQueryFileTree and removed from ClientScripts
  • Removed calls to jQueryLayout
  • Removed call to greybox from Contact Form
  • Fixed possible XSS bug in help dialog, reported by Jarrod Farncomb of TSS (CVE-2017-1000457).
  • Removed WebStore from core (will be available as a separate download from the AddOn store)
  • Cleaned up user.config.sample file
  • Standardized on "Login" instead of "Sign In" (both were used before now)
  • Added Security Protocol information to "Security Advisor" (Administration > Security Advisor)
  • Added CombinePath method to DiskFileSystem file system provider.
  • Added FolderVirtualPath property to WebFile
  • Added NameProperty and ContentProperty to ContentMeta. This allows for creation of meta elements with custom names <meta property="foo" value="bar" /> instead of only allowing for <meta name="foo" content="bar" />

Skinning

  • Added FormGroupPanel control for settingrows to control their classes
  • Updated Site Settings page to use new FormGroupPanel control
  • Updated the Layout.Master.cs to expose SiteSettings (siteSettings), PageSettings (currentPage), isCmsPage and isMobileDevice to the Layout.Master for richer skinning functionality (Check out the layout.master in the Nature theme)
  • Updated CSSHander to allow for "https://" and non-http-specified ("//my-domain.com/") url calls
  • Updated Avatar.cs with new ExtraCssClass property
  • Cleaned up markup of CommentsWidget
  • Added themeable properties to CommentsWidget to help with skinning
  • Added themeable display settings for Contact Form
  • Cleaned up markup of the RelatedNewsletterSetting control
  • Cleaned up markup of HTMLCompare feature (used by version history)
  • Fixed Inline Editing in HTML Module for selecting files/images
  • Fixed CSSHandler for HTTPS URL calls
  • Fixed missing CKEditor Image2 Alignment Classes
  • Added InsideTopMarkup to replace LiteralExtraTopContent in BasePanel
  • Added InsideBottomMarkup to replace LiteralExtraBottomContent in BasePanel
  • Removed the .LESS CSS Utility from the Administration area. We recommend using a tool like Prepros for LESS management.

Picking up steam

mojoPortal has been getting some media attention lately, like this article from HostingAdvice.com. We've got some exciting new updates coming soon too, including new modules, expanded blog features, and new content creation tools. We've been working hard on things and hope to have a release ready soon.

We can truly appreciate a CMS that simplifies content entry and management for novice website owners without compromising the functionality demanded by seasoned developers. Kudos to the mojoPortal team for optimizing web development for folks across the board!

Thanks to the community for remaining patient as we work on these updates. mojoPortal is going to be better than ever.

mojoPortal 2.5

The team here at i7MEDIA is so very excited to release mojoPortal 2.5! This is our first release since taking over the mojoPortal project and we're already gearing up for the next one! 

Where to Get It?

Head over to our GitHub Releases Page.

Major Updates

  1. A new File Manager has been added which replaces all three managers in previous versions.

    Using the new File Manager

    FEATURES

    • Create folders
    • Upload multiple files
    • Delete files and folders
    • Copy files new
    • Move files from one folder to another new
    • Rename files and folders
    • Compress multiple files into a .zip file new
    • Extract a .zip file into the current directory new
    • Download single files and download multiple files as a .zip file [3] new
    • Edit document type files [1] new
    • Preview image files
    • Select files/mojoPortal pages to return to the WYSIWYG editor
    • Search files in currently viewed folder new
    • Change manager view between List and Grid new
  2. The new Page Manager

    Page Manager Pro has been added to the mojoPortal core. Now, everyone can enjoy easier page management with the new Page Manager. Drag-and-drop functionality makes it easy to move pages while the enhanced UI makes understanding a site's hierarchy much simpler, particularly on larger sites. We're still building the documentation on this feature but it's really self-explanatory.

Minor Improvements and Changes

  • CKEditor 4.6.2 (image2 extension is included by default now) with new moono, moono-dark, and moono-lisa (default) skins.
  • Image File Extensions are now configurable using web.config settings.
    <add key="ImageFileExtensions" value=".gif|.jpg|.jpeg|.png|.svg" />
  • Updated to Colorbox 1.6.4 and changed Colorbox theme configuration. See Important Skin Changes.
  • Added "RssFeedLinkFormat" display setting for Blog. See Important Skin Changes.
  • Added web.config setting to control showing feed links with https. Defaults to true. Set to false if this causes you problems with a feed reader.
    <add key="UseSSLForFeedLinks" value="true" />
  • Added Framework as the default skin and removed Artisteer skins. Artisteer is still supported but we recognize that the included Artisteer skins aren't very pretty so they have been removed from the release.
  • Renamed "Page List" and "Add/Edit Pages" to "Page Manager".

Bug Fixes

  • Removed non-existent local-fs.pubxml file reference from mojoPortal.Web.csproj
  • Fixed renaming of files on upload so all files are renamed properly.
  • Removed unneeded apple-touch-icon.png from the root of the install. This was causing the mojo dog image to show up on tablets. Skin developers should follow these instructions for adding touch icons to their skins.
  • Fixed WebStore FlexCartLink where IncludeCartTotalWhenZero did not do anything.
  • Fixed WebStore FlexCartLink where ModuleGuid was actually supposed to be StoreGuid. Neither are really needed so we don't do anything with ModuleGuid on this control anymore.
  • Fixed an issue where when you create a new site it wouldn't copy over folders inside a skin that were more than 1 level deep.

mojoSkins Project Release V1.0

Making mojoPortal Beautiful

Our team at i7MEDIA have been developing mojoPortal skins for a long time, and we've done a lot of fine-tuning of our skinning process over the years. Now we want to make the fruit of our labor, the Framework skin, available for the whole mojoPortal community, for free! In light of this, we've just launched our new mojoSkins project with a version 1.0 release. This first release comes as a package of 5 skins: Framework v3.3.7, and four skins created out of Framework using Bootswatch.

Expect Much More to Come!

Framework was always intended to be a very basic skin which we would then build our designs on top of. With this new project, we're going to have to change that direction a little bit, making improvements for its use by all of you. For instance, because it's been a very long time since any of our clients used the Webstore feature in mojoPortal, the current version of Framework in this release doesn't include styles for it. We will be fixing this, as well as adding styles for all of the Pro modules in the near future, fixing any bugs that arise, and making quality-of-life improvements for the end users where we can.

We want to ensure that everything is as good as possible while also keeping the skins as small as possible, since after all Framework is intended to be a base that you use to build your own design on top of, which is why we are also going to be adjusting mojoPortal's core code to better suit being used with skinning systems like Bootstrap and will adjust the Framework skin as needed to reflect those changes. We believe we can greatly reduce the amount of CSS needed in Framework by doing this (though it is already reasonably small).

While the skins in this first release are primarily targeted at other developers, who we want to provide with a solid foundation for skin creation in mojoPortal, we believe they will work well for anyone, developer or not, who wants to create a very clean mojoPortal site.

How Can I use it?

Using the new skins from this project is incredibly easy, here's the step-by-step:

  1. Download the skins from here.
  2. Extract the zip file you just downloaded.
  3. Each of the skins is included in the root of the zip in their own folder. Choose which skin(s) you'd like to use, and copy those folder(s) into the Data/Sites/1/Skins directory in your mojoPortal installation.*
  4. Sign into your mojoPortal site as an administrator.
  5. Click "Administration", then "Site Settings", and on that page, scroll down until you find the select input labeled "Skin".
  6. Your new skin(s) should be visible in the drop-down, select it and hit save.

That's it, you should now see the skin on your own site!

* Note: If you have a multiple site install, change the /1/ in the path described in step 3 to be /#/, where # is the site number of the mojoPortal site you'd like the skin to appear on.

How can I contribute?

We have already begun tracking issues in the project's GitHub repo, and look forward to community involvement as the project evolves. Please report any issues you notice, and feel free to do a pull request if you've managed to fix an issue yourself.

You can also create your own Bootswatch skins out of Framework, and submit them for inclusion in the project, which would be an awesome help.

Page 1 of 91 1 2 3 4 5 6 7 8 9 10 30 60 90 > >>
https://www.mojoportal.com/blog