The first ever Umbraco Meetup in Portugal is going to be held this Thursday at Create IT offices in Lisbon. The event filled up fast which leads me to believe that Umbraco is getting recognized as one of the best CMS’s to work with.
We’ll try to record some of it, and share it on youtube!
Lisbon Umbraco Meetup
Lisbon, PT 65Members
The Lisbon Umbraco Meetup is a networking group for anyone interested in Umbraco. We’re planning on having at least one formal presentation followed by some lively debates or …
Since Umbraco is built on top of ASP.NET MVC, we can easily use this package on our websites. There are, however, some caveats, because Umbraco doesn’t use the native MVC routing.
For Umbraco, every page that uses the same document type is processed through the same route, therefore, if we have 100 news articles that use the NewsItem document type, from the moment we open one news article page, every other news item page will display the same information, despite having a different URL!
I don’t have very fond memories of using .Net resource files (.resx) to handle the translation of static web page elements such as form labels.
The Visual Studio resx editor was slow and using it to change resources that were more than a single line of text was a pain. I still have nightmares where I’m trying to edit complete email templates on a single field of a resx file…
The biggest problem with resource files, however, is that they are included in the project. This creates a problem for both the developers and the content managers, since the content managers are not able to change resources themselves, and the developers need to be changing resources files when they could be doing something productive.
The following will show a way to handle resource items in a MVC website project, where the resources can be stored wherever they are more easily handled by content managers: a SharePoint list, a database table, an excel file, or something completely different.
Manually creating Umbraco packages can be tiresome.
If you’re continuously building upon the same package, doing it manually is wasting time that can be more useful developing new features.
This problem presented itself to me when improving Approve It. In order to create the Umbraco package I need several things:
The main assembly
The new dashboard section html file
The Package Actions Contrib assembly and its respective actions that enable me to bundle some translations in the package
I decided to go with Grunt and the Grunt Umbraco Package task. A grunt file is a script that typically automates the process of executing some tasks. These scripts can be executed on top of NPM, a package manager for javscript that provides a command line tool to run its packages. To streamline even more the package creation, I installed a Visual Studio extension called NPM Scripts Task Runner, that detects the grunt file and provides a simples UI to handle its tasks.
The previous post (Part II) showed how to populate the content tree of a custom Umbraco backoffice section. This one presents a way for content managers to quickly handle each post pending approval, which means we’re going to create our own AngularJS controller and view.
When the content manager selects one node pending approval we want him to be able to take three quick actions:
The previous post (Building an Umbraco 7 backoffice extension – Part I), demonstrated how easy it is to create a new section in Umbraco’s backoffice. This post will show how we can populate this new section with meaningful content coming directly from the backoffice.
To begin with, we must reference a few more assemblies (also available at the Umbraco’s installation bin directory):
Then we can populate our section with a tree containing content awaiting approval. To accomplish this we must extend an Umbraco class named TreeController and decorate it with information about our Approve It plugin:
The next series of posts will show how to build plugins that extend the default Umbraco backoffice capabilities.
In a recent project, we had the need to serve website assets and website content images through a CDN network. Furthermore, each image presented in the website content must be available in multiple resolutions.
We ended up serving both the assets and content images through the same Microsoft Azure CDN. This post describes the way we implemented it.
First the easiest part. We have our site in a Azure Website, in order to serve the site’s assets through an Azure CDN we only needed to point the CDN to the website’s URL. So, if the website’s assets are located in something like http://sitedomain/assets/*, instead of referencing the assets through a relative url such as /assets/*, we just need to use the CDN url to serve them: http://cdnurl/assets/*. Through web.config transforms we are also able to use local assets during development and change to CDN only on the production environment.
Regarding the website image content, the solution has three phases.
In my most recent project we had the need to build multiple websites that would share some common functionalities but would be installed in separate servers and would be available in different domains.
We were using .NET 4.5 and MVC 5 and there was no out of the box solution for this problem. Throughout my search I came upon this paper and we took some ideas from it. This post describes the main changes to a normal website project we had to make in order to make this work.