Posts in Category: Tutorials

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.

Using the Blogsy iPad App With mojoPortal

It seems like developing applications for the iPad is all the rage these days as it has become a very popular device.  I’ve thought about developing an iPad app for mojoPortal, it would be fun to learn how to develop apps for iPad and iPhone, but honestly my plate is pretty full just working on mojoPortal itself and add on products for it. So I got to wondering if there were any apps already in existence for the iPad that could work with mojoPortal similar to Windows Live Writer which is the best Windows desktop application for blogging. In case you missed it, in version 2.3.7.5 we improved our support for Windows Live Writer so that you can now edit CMS pages with Html content in addition to Blog posts. I thought it would be pretty cool if there is an iPad application that offers similar functionality as Windows Live Writer.

So I tried a few iPad applications including the WordPress app, BlogPress, and Blogsy. I found Blogsy to be the most feature rich user friendly one of the group. All of these apps support Wordpress and some of them support a few additional blogging platforms and since mojoPortal is much less known than the big blogging platforms I would not expect the developers of those apps to be interested in working on specific support for mojoPortal. So instead I decided to try to support more of the Wordpress API in mojoPortal so that these apps could be used with mojoPortal just as if they were using  Wordpress. I used all 3 of these apps in testing to make sure I was correctly implementing the Wordpress methods, but Blogsy is by far the best one that I could recommend to mojoPortal users who would like to blog from their iPad.

IMG_0012

In Blogsy you configure mojoPortal the same as if it were a self hosted Wordpress site. So you enter the url to your Blog page (use https if you have SSL installed) and your login credentials.

Now Wordpress of course is a PHP application (not a .NET app) and the Url for the API is yoursiteroot/xmlrpc.php (you don't enter this url in Blogsy but that is the url it will use to talk to mojoPortal) so we have a handler mapping in our Web.config file that maps requests for xmlrpc.php to our metaweblogapi.ashx handler. This probably only works in IIS 7.x and it may not work if you have PHP installed and configured for your site, but it does work for me.  I don’t have PHP installed so not sure what would happen if it is, but in most hosting control panels you can disable PHP for your site even if it is installed on the server, so hopefully it will work for you.

<add name="WordpressXmlRpcHandler" verb="POST" path="*xmlrpc.php" type="mojoPortal.Web.BlogUI.metaweblogapi, mojoPortal.Features.UI" preCondition="integratedMode"/>

When I first began work on the additional API methods and testing with Blogsy I was getting a lot of crashes. Adding an image from the iPad photostream for example was causing a crash after it uploaded the image to the server. But I contacted the Blogsy guys and they both helped me with advice that the images needed to be named a certain way with a prefix, and they also fixed things in their app to make it more robust and reduce the crashing and now it is working pretty well. I have a first generation iPad and suspect these apps work even better with newer iPads that have more memory available, but it works well enough even on my older iPad.

IMG_0009
You can create and edit posts, you can publish or post as draft. It supports inserting images from your Photostream, local storage, Fickr, Picasso, and even videos from YouTube. You can assign and edit categories. You can create and edit CMS pages with Html content in addition to Blog posts. The only missing feature is the ability to set the parent page of a CMS page so you can’t manage the site hierarchy the same as you can with Windows Live Writer, but who knows if enough people request it maybe they will add support for parent pages in a future update to Blogsy.

The additional support for the Wordpress API is included in mojoPortal 2.3.8.1 but I’m just now getting around to documenting it so that people know they can try it. If you have an iPad I hope you’ll give it a try. If you have any troubles with it or any feedback positive or negative let us know. In theory it should work with any Wordpress client. While Windows Live Writer is still the best Windows app for blogging, in the Mac world apps like MarsEdit should theoretically work though I haven’t actually tested it yet.

A quick shout of thanks out to the Blogsy guys for their help and support. I highly recommend you give their app a try if you have an iPad. Its very inexpensive ($5 if I recall correctly), I actually think they could get away with raising the price a bit because it is the best blogging tool currently available on iPad and they are very passionate about it and constantly improving it and listening to the feedback from their customers.

See also:

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

mojoPortal SQL CE and WebMatrix

This is just a quick post in follow up to my previous post SQL Server Compact 4.0 and mojoPortal, to provide some updated information. We recently released mojoPortal 2.3.4.8, and I've updated the package for SQL CE recently to contain migration scripts so that it is easy to migrate to SQL Server.

I've also created some new documentation.

Using WebMatrix with mojoPortal

WebMatrix includes IIS Express web server which is much easier to use on your local machine than IIS but has all the features of IIS. Once you install WebMatrix, you can right click a folder in Windows Explorer and choose "Open as a Web Site with Microsoft WebMatrix". So you can just unzip the mojoPortal package and right click the wwwroot folder to launch a mojoPortal site on your local machine. If using SQL CE you don't need to even need to configure a database, it just works, but for other mojoPortal packages you would have to set the connection string for the database. 

One could also use WebMatrix for light mojoPortal feature development, perhaps at some point I will make an article showing how to use the mojoPortal Hello World examples with WebMatrix. While WebMatrix is not designed to scratch the same itch as Visual Studio, it is a useful tool even for folks like me who really live in Visual Studio all day long. I encourage you to check it out, especially if you are interested in working with the SQL CE version of mojoPortal.

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

5 New Developer Training Videos

Just a quick post to mention that 5 more videos have been completed in the developer series of videos. Here is the full list of videos so far and more are on the way soon. The newest videos are at the bottom of the list. The series is aimed at teaching how to build custom features that plug into mojoPortal by demonstrating step by step how to implement a guest book feature. Once the series is completed I will also make the source code available.

  1. Getting the code with TortoiseSVN
  2. Source Code Overview Part 1
  3. Source Code Overview Part 2
  4. Custom Solution
  5. Hello Web
  6. Hello Web Part 2
  7. Hello Guest Book
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table Using the Setup System
  12. Using The Setup System to Run Upgrade Scripts
  13. Generating a Data Access Class
  14. Generate the Business Layer
  15. First Guestbook Submission
  16. Form Layout
  17. Form Layout and Data Binding
  18. Upgrading from svn and Converting to VS 2010
  19. CSS Layout
  20. Using a WYSIWYG Editor and Captcha
  21. Default Button and Input Validation
  22. Protecting Against Untrusted Content
  23. Supporting Pages Part 1
  24. Supporting Pages Part 2
  25. Supporting Pages Part 3
  26. Enforcing Security Part 1
  27. Enforcing Security Part 2
  28. Implementing the update method

UPDATED 2010-05-11: added 3 more videos 26, 27, and 28

Also don't forget the mojoPortal online user group meeting is coming up on May 18, 2010 at 8PM EDT.

mojoportal online user group meeting

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

Some New Training Videos

Just a quick post to let people know about new training videos available. I am making it my focus for this month to produce a lot more tutorials to answer common questions and especially to help developers get started with custom development. I still have a ways to go with the developer tutorials, but thought I would go ahead an post links to videos I've completed so far.

Installation and Configuration

Developer Series

I've begun a series of clips where I plan to implement a simple Guestbook feature as a way to cover important concepts. 

  1. Getting the code from svn trunk
  2. Introduction to the Source Code Part 1
  3. Introduction to the Source Code Part 2
  4. Creating a Custom Solution and Project
  5. Hello Web Part 1
  6. Hello Web Part 2
  7. Guestbook first steps
  8. Concepts Part 1
  9. Concepts Part 2
  10. Debugging in IIS
  11. Create a Table in the db using the setup system
  12. Create stored procedures with an upgrade script using the setup system
  13. Generating a data access class
  14. Generate the business layer
  15. First Guestbook submission achieved
  16. Form Layout 
  17. Form Layout Part 2 and data binding

Just getting started so far, lots more clips to produce to complete the Guestbook tutorial. I'm planning to cover development of business and data access classes and how to add supporting pages to your feature as well as how to make your feature searchable. I'm working only from an outline not a script, so the videos are mostly improvised and I stumble on a few things here and there, but rather than edit them out, I think it is helpful since you may also stumble a little bit, so learning to work through the stumbles is part of the process.

Each clip will be less than 10 minutes in order to fit them on YouTube, but they are in high definition so the video quality should be pretty decent.

UPDATE 2010-03-08 -added items 8 - 17 to the list above.

 

Follow us on twitter or become a fan on Facebook

follow us on twitter become a fan on facebook

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.

New Training Videos Thanks to Expression Studio

Recently, Microsoft announced the release of Expression Studio 3. I was very excited about this because I noticed that my MSDN subscription included it whereas in the past all I had access to was Expression Blend and Expression Web. Kudos to Microsoft for making the whole of Expression Studio available to MSDN subscribers. I don't know if it applies to all subscription levels but whatever I have now includes it and its awesome!

The new parts for me are the Expression Screen Capture and Expression Encoder. I was heavily involved with streaming Windows Media Video years ago like 2003-2005 ish but the new Silverlight technology is so much nicer today. Anyway, the Expression Screen Capture tool is like Camtasia and Wink and other screen capture tools but its pretty darn easy to use and the Expression Encoder can encode the resulting screen capture into various formats, especially .wmv that is optimised for Silverlight, but also formats like mp4 suitable for upload to YouTube or Facebook etc.

I've found some issues with the audio getting out of sync with the video on YouTube but don't really know if its some fault of the mp4 file I upload or the conversion process to Flash that YouTube does. Some of the videos I uploaded to YouTube are better than others in this regard, but the Silverlight versions are consistently good.

There is even free hosting for some Silverlight files up to 1 GB total on http://silverlight.live.com/ and I'm serving my Silveright training videos from there. Expression Encoder can generate an html page to host the video and its easy enough to modify it to point to the video on the silverlight.live.com site.

So I spent the last 2 days doing some screen capture tutorials for mojoPortal using these new tools. For most of the files I uploaded alternatives on YouTube that don't require the Silverlight plugin, but as mentioned a few of them have audio video sync problems but not real bad. Best if you can watch them using Silverlight though and one of them, the Introduction to the mojoPortal Source Code is 20 minutes long so it was too long to upload to YouTube as they limit you to 10 minutes.

Here is a list of the video tutorials I made in the last 2 days:

I was long overdue to make some more video tutorials and having these nice new tools inspired me to spend a few days on it and it was kind of fun. Hope you find them useful and informative. Now back to regularly scheduled development ;-)

Gravatar Joe Audette is the founder of the mojoPortal project and was the primary developer until February 2017.