How (or should) I create my own wiki capabilities? - asp.net

I have an ASP.NET website and over time it has become more and more of a data repository where I have numerous database tables and the site just ships out this data.
I am realizing that a wiki might actually start to be a better model for what my website is turning into. Or at least parts of it as it's really just adding and updating content that I am doing. Here is my dilema:
There are certain parts of the site that do need to be non-wiki and fully customizable, etc. Should I go and build my own wiki capapabilities into my website so I can make it part wiki (embedded when I need it) and the rest regular ASP.NET? If the answer if yes, are there any tips or boiler plate code on how to build and host a wiki?
The alternative is to use existing wiki software. I have tried most of them and my issue is that I need to host it myself on Windows and as mentioned above I want to have complete control and have just a simple wiki page editable inside my site. I have tried using frames, etc. to simulate this, but it all seems kind of hacky.
Any advice on:
A. If you think I should build the wiki part of my site below, is there best practice, boiler plate code on how to do this quickly?
B. If you think I shouldn't go reinvent the wheel, is there any existing Windows-hosted software that I can embed in my site without losing any control?

Rolling your own is a waste of time unless you have some major change or addition to the functionality of a wiki not otherwise available in existing systems (and even then, it's often a waste of time to start over than to branch an existing setup).
I recommend using something like ScrewTurn, which is open-source and ASP.NET, which gives you a fully-functioning wiki with no development, as well as gives you as much control as necessary if you do need to make changes.

I would agree with Rex M. You don't need to start from scratch. Leverage an open source product that is already available and build on it (if you even need too).
The added benefit of that is from a collaborative perspective when you build some interesting functionality into your version of the software and then share that back with the community.
Chances are if you need to build something and find it useful that other folks somewhere have close to the same needs and would welcome your features and enhancements.
That's the beauty of open source.

Take a look at dooWikis. With this, you can embed wikis into your site like you want to, without redirecting to a third-party service, and restrict who gets to make edits.

Related

Designing a CMS to allow complete page design

Currently whenever a client wants a website I provide my own CMS however I have been wondering whether a 3rd party CMS may be easier.
At the moment I have built it in ASP.Net & ASP.Net MVC (I'm thinking of moving to Ruby on Rails). A master page has 5 pagecontent areas, top, left, middle, right & footer.
I then create usercontrols such as Image_Top, Image_Left etc. In the CMS the user can create a page and then choose how they want that page to look by choosing from the list of usercontrols. This gives them complete control over their page.
Would you say this is a good approach or is there a better way to allow them to design their pages? I was thinking of instead of maintaining my CMS I would recommend using Joomla, Drupal, DNN, SiteInfinty or whatever to manage the backend. However do 3rd party CMS's allow for that much control or am I better off sticking to my own CMS? Is using a 3rd party CMS as easy as plug and play?
Thanks
DOWN THIS PATH LIES MADNESS.
As someone who has been a developer for two commercial CMS products, and implemented at least 4 others for projects of varying complexity and completeness I can only say DON'T DO IT.
The CMS is the technical equivalent of invading Afghanistan ... everyone has had a turn, but no-one wins.
Find some technology you are comfortable with, learn it's nuances and annoyances, and concentrate on the things that are interesting and add value.
Editing content is a commodity.
Personally I like Wordpress, but depends on your use-cases and requirements.
What you are descriping is possible with modX using template variables.
It got a quite steep learning curve in the beginning, but i think you'll like it.
It's open source and runs on PHP and MySQL.
Give it a go.
I think you need to investigate, perhaps build and try each so that you can accurately match the capabilities against your requirements. You may find that different CMS fit different scenarios, but you will need to determine which is which. Unfortunately the general answer is "It depends" and only you can really decide which is the best option.
In some respects CMS systems like Joomla have security and version features that may offer you an advantage. Potentially you can incorporate these features into your framework if you have the time.
There is nothing really wrong with rolling your own framework. If you've saved time and created something that your clients like, then this is a good thing. It brings the benefit to you in that you get the learn how to implement the CMS features with a variety of platforms. Why toss this out if it has worked for you?

Drupal vs Some Other CMS

I'm going to be moving my website to a CMS in the coming months I'd I need some help on choosing an appropriate CMS. Many of the websites I've seen tend to say "use Drupal, hands down". However, my website truly doesn't have a need for commenting or community features. Its pages will need to be modified occasionally, but not extensively. My website will also consist of many programs, each with their own sub-pages and menus.
There are probably 25 people that will need access to the content on my website and will need the ability to update it.
I do like the idea of being able to tag and categorize the content, and the modular aspect of Drupal but is it really right for my website? If not, which CMS may fit my needs better?
It sounds like Drupal would be an excellent solution to your company's needs. I used to recommend WordPress for smaller, single-blog type sites, but now, even for those, I recommend Drupal because you can start small and scale up as your needs grow. It has a very dedicated community and there is a module for just about any need you may have.
I would agree with Drupal. The thing about Drupal is that you start out very small and add on as you need things. There is a ton of documentation, it is well coded, always being expanded on, good forum support, and free. It's the easiest to install, most problem free, and most maintainable CMS system I've seen so far.
You can turn Drupal commenting off with the press of a button, and if/when you decide to add onto your website, perhaps you want an ad rotator, more extensive user permissions, etc, etc, it is all already developed for you and ready to go.
I am not sure if Wordpress supports multiple users on a site.
The smallest you can go for a CMS is something like 10kCMS or the more popular TinyMCE
If it is something small I will go with WordPress as it is easily themed and extensible. There are a lot of community plugins and support. Their documentation is also fairly simple as they don't have a thousand of functions and stuff you need to remember and understand. With some creativity the basic functionality of WordPress is sufficient to solve almost all problems that might arise in small to mid-size website.
I also like Drupal, but you may consider Umbraco as well. http://umbraco.org/ I'd use Umbraco over Drupal if your team is stronger in .Net than PHP. (Really, I think that's a larger concern - what are your organization's strengths? Play to suit them. You are making a decision that will pave the way for many developers besides yourself, and business decisions of your company.) Both are extendable and open source so you can write your own modules/components to customize. It may be cleaner to import into Drupal tables than Umbraco, since it goes down to xslt files. (EDIT: This looks to be no longer the case in the new version - http://umbracohosting.com/umbraco-4---get-excited/one-cms-any-database) From a front end dev perspective, both offer great control of the final output.
From working on legacy stuff a lot, you may end up hiring interns to do the gruntwork. There's bound to be tons of inline tables and all sorts of un-reusable code in there, it may be easier to scrape the content manually and start w/clean markup for the content portions.

Umbraco, is it just me or is it really hard to use? [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
Looking for some feedback on those of you who have evaluated umbraco lately.
I've been on a quest for the 'best' cms that balances ease of use/extendability/customization etc. to use as a base for a new vertical product I am in the planning stages on, so for the past month or so I have been downloading, installing, reading source code and creating test sites in every asp.net cms I can get my hands on - and so far I have pulled down GraffitCMS, MojoPortal, Oxite, Orchard, Kuboo and maybe a couple of others that I am not remembering of the top of my head.
For each of those, except Umbraco, I have been up and running in less than a couple of hours, including adding pages, customizing templates, and in some cases (especially Graffiti), writing drop in widgets in C# in a matter of just a few hours....
But with Umbraco, after wrestling it for almost 2 days just getting it to run, and now another morning watching videos, and then building pages etc, I am still unable to even get even a simple site operational, and even the pages I have gotten working crash routinely (not to mention being a dog)...
So, the question is: Am I doing it wrong? or is it really that hard to work with? and more importantly, if I continue to push forward, will it be worth it? or do I cut my losses and move on?
Edit: asp.net with SQL Server support are requirements of anything I pick.
UPDATE ONE YEAR LATER (Feb/2011):
My initial impressions are still accurate, Umbraco is different than most of the other CMS's that I have used in the past, and for me took a bit longer than usual to 'get it', but now that I have, I have to say I have a much better appreciation of the product, what it does, and how it does it - and to top it all of, it really performs really well - especially with the latest release of 4.6.1. So call me a convert - I am glad I stuck it out and then took another look. I only update this post now, over one year later so as not to leave my initial negative 'review' here for posterity.
The learning curve for umbraco is short but steep. Once it all 'clicks' then you'll be up and running in short order.
It's different from other CMS platforms in that you doesn't give you anything out of the box - just a blank canvas to work with. Other cms systems will set you up with a default template and allow you to drop in pre-built functionality. Umbraco is, by design, not like that at all. You only get out what you put in, it doesn't generate anything for you.
This is ideal for developers and designers who want 100% control over their code/markup.
Version 4.7 (currently in release candidate) introduces the Razor syntax for creating macros. This does away with needing XSLT+XPath which I think was a big stumbling block for a lot of people. Even if you're not familiar with Razor, it is much intuitive to learn than the XML based offerings.
The videos have been mentioned by other posters below. $20 is a small price to pay to get up and running quickly.
Does it matter? What I mean is, if you find it hard to use, and there are other alternatives available, why persist? If it's non-intuitive to you, then you're going to find it hard to use. If it doesn't have some killer feature you (think you) need, dump it and move on. You don't need the hassle of trying to wrap your head around some oddly-designed (to you) product, and the product's developers don't need the hassle of trying to support people who think their product should work in some way it wasn't designed to.
None of this is intended to be harsh, just practical. You have the freedom to choose, so choose what works best for you. This sounds like it isn't working, so move on. My brother-in-law wanted to buy a Volvo, but found the controls and dashboard totally confusing, so he wound up with a BMW instead. Nothing wrong with the Volvo, nothing wrong with my brother-in-law, just cognitive dissonance. Don't worry about it.
I've been building sites with Umbraco for something like 5 years now, and I don't recognize your description of Umbraco as a very difficult CMS, but I'll try to provide a few pointers here to help you if you're still considering Umbraco:
Go to http://our.umbraco.org, read the Wiki-pages, and post any questions in the forums there, it's a really friendly community.
Always use Microsofts Web Platform Installer when installing Umbraco, It'll help you create your site, and set up your database. Just be sure not to install Umbraco in a sub/virtual directory, since Umbraco can't handle a setup like that.
If possible, do your install on a development machine with IIS7 and SQL Server Express, it'll work for sure, and deployment of a finished site can be done with a xcopy transfer and a restore of a database backup.
Don't start a new Umbraco site, before you've coded the HTML you'll be using for the site, or at least have a really clear idea about the page types, and html content you'll need.
I hope I'll be seeing you on the Umbraco forums.
Regards
Jesper Hauge
As a grizzled CMS veteran I can say that Umbraco is no harder to set up and use than many other CMS solutions.
However much of whether you find it hard or easy depends largely on your previous experience with CMS and your expectations for what a CMS should provide out of the box.
I've worked mostly with larger CMSs:
Microsoft CMS
Immediacy
Obtree
Reef (anyone remember that one!)
etc....
Against those it is no harder to use and is probably easier as it tends to get out of your way and lets you get on with building the functionality you require.
However if your expectations are more based around things like Wordpress, i.e. install and go but with more limited options, then it can be hard to start with (if you just fire it up without installing a website starter kit).
My recommendation is that if you are building a small site you take a look at the Creative website starter kit at our.umbraco.org. There are also many packages that you can install to make things easier or add specific functionality (including pre-built navigation controls and full blog solutions).
Also take a look at the Wiki on our.umbraco.org and ask questions in the forum, the community is helpful and friendly.
Umbraco is a bit different than other CMSs like Sitefinity, DNN, or Drupal. It does compare well to Sitecore.
Yes, there is a bit of a learning curve. I think the XSLT can cause that, but more likely its just the fact that you have to understand how Umbraco is structured. There are very few "modules" out of the box that you have to arrange and style. Rather, it allows you to easily create your own structure and markup that doesn't force you into a box that is hard to get out of.
I've used Drupal, Sitefinity, WordPress, Sitecore, and some others and frankly Umbraco is my favorite. If you know how to develop great web sites and you don't want limits on your design, markup, or client experience then Umbraco is a great choice. If you aren't really building a site but just want to put pieces together and get "something" working, then it may not be worth your time. If you build lots of sites or want your end users to edit content easily (not just a big rich text editor), then it may be worth overcoming the learning curve.
The videos are totally worth the $20 to watch BTW. They are far better than any documentation you can find and after maybe 5-6 videos you should be "getting it". Just buy one month and cancel after that.
The community is awesome too. If you're struggling, head over to the http://our.umbraco.org forums and get some help. There's lots of it over there.
Also, try installing the Creative Web Starter Kit package or the Blog 4 Umbraco package to get a head start. Those will be more familiar to those coming from a Sitefinity or Drupal background and may help the learning curve flatten out.
Good luck!
As a senior .NET programmer naturally I gravitate to .NET based solutions, and Umbraco seems to be a solid CMS. So I installed it and tried to gain some knowledge and getting it going and these are my findings:
Videos are ridiculously thin on content. The first introductory video talks of a runway. What on earth is a runway??? No jargon please, I'm a first time user.
You have to pay for the most advanced videos. No wonder it hasn't taken off as a mainstream .NET based CMS.
Out of the box demos are non functional (I chose the business theme an the menus don't work)
Admin area very non-intuative
Installation forces Web-Matrix installatiuon.. I have IIS7 and so do our production systems... I DON"T WANT WebMatrix!!! Finding documentation on this is also not easy.
All in all EXTREMELY FRUSTRATING to use and put me off Umbraco totally.
So I've picked up on Wordpress in the mean time and find it extremely easy to extend the admin interface. Documetnation and community support is superb. Just a pity its PHP bases because that won't fly in my company that has invested heavily in .NET developers :-(
Opinions aside, this all depends on your background. I'm a software engineer not a webmaster. So, I think like a software engineer and not like a webmaster.
Umbraco was VERY frustrating for me to install simply because there was no easily found TEXT documentation. Once I finally found that, it was a breeze to install.
The problem for many web designers is that they are not software engineers. Nothing bad about web designers who aren't also software engineers, it's just a different way of seeing the world. I have worked a lot with web designers who needed to interface with my C++ and C# back ends; they have a completely different perspective of almost everything.
Once I got past the goofy implied install process (which is bad, bad, bad -- you should never require another product JUST to install your own!) I found Umbraco to be simple and intuitive. Even my (non-programmer) girlfriend found it to be much more logical than some of the other CMS's we had been playing around with. Drupal, for example, was simple to install, but isn't really designed for a Windows development (ASP.NET/SQL Server) environment and I hate PHP, so I eventually abandoned that. MojoPortal was really nice and simple, but... it was... well... simple. Too simple.
I like Orchard, but the last time I looked at that there was so little in terms of what to start with that I decided that it would be a problem in the immediate future. I wanted a web content management system, not a web development platform. I kept thinking Orchard is a lot like *nix: "A nice place to live, but ya wouldn't wanna visit there."
Umbraco for me is a nice medium place, extremely flexible and easy to extend. It tries very hard to not get in your way. If you want to extend it you would probably do best to either learn C# (or {cringe} VB) or co-opt someone to write the CodeBehind for you. But, using it is extremely simple and straight forward.
I can't say whether it's just hard to use in general - but I came to much of the same conclusion as you did. I was especially disappointed by the lack of useful documentation - all the potentially useful video resources at their website are for pay $$$ only - what's up with that??
Also, the few intro videos I saw never quite clicked with me. They presented lots of concepts, but really never explained them much.
I also had tried Graffiti, but that never quite worked, either - and with its future less than sure, I gave up on that. Others seemed overly complicated for my requirements (Kentico, CommunityServer, and others).
In the end, based on a tip by a fellow on superuser.com, I went with BlogEngine.NET for my club's web site, and so far, I haven't looked back at all. It's pure ASP.NET which appeals to me, it's easily extensible, has a fairly large community with extensions and themes and stuff. From my personal experience, I can only recommend you check it out, if you have a mostly (blog) post based site in mind.
Strange. It takes me 5 minutes to install new Umbraco site, in 2 hours i managed to create standard portfolio website (well, when I've already got used to XSLT). It's very easy to create, modify, add custom controls, add smth to administration section, etc.
What was hard to understand (took me half an hour) that I don't have to write any SQL or C# code until I need some additional data model that's above Documents concept or Umbraco capabilities. Such samples: auto-resizing pictures, invoking some web-service, etc. - anything that comes from business logic layer that can't be covered by CMS model.
In most cases Umbraco is so easy to use that even that little bit of documentation is enough. There's pretty thin and easy API provided by Umbraco, but there's a good tech. level needed from developer, and that's XML 1st of all: XQuery and XPath to use maximum of XSLT.
And once more about installation: I just followed each step of installation guide and that's all.
The problem with Umbraco is that the UI is awkward and it's not immediately apparent how to use it and where to find things. There are several section buttons at the bottom of the page and when you click on one, you're presented with a tree view where you drill down to what you want. This is bad UI 101: no mystery meat. All functions should be organized and visible to the user. Dropdowns with submenus would have been a better approach.
The UI element names are ambiguous. For instance, there's a Members and a Users section, a Developer and a Settings section, a Content and a Media section. Isn't Media supposed to be Content? Aren't Members also Users? Aren't Settings something a Developer would do? You get my drift.
With the release of version 5, none of these issues have been addressed. The best thing they did was to kill XSLT/Classic ASP.NET and replace it with MVC and Razor. This makes getting your head around the product much easier from a developer's standpoint, despite a lack of adequate documentation for version 5. From a content creation standpoint, it's still lacking, however.
If you want to see a great UI, look no further than SiteFinity. Even though the new design isn't as good as SiteFinity 3 versions, it's content editing is the best I've seen on the market. It's too bad it doesn't support MVC and it's controls are cumbersome to modify and style.
what i wish i would have known!
Umbraco - Before you start

How do you prototype a large website?

I am working on the rewrite of a large VB6-based application. We are moving from Windows Forms to web-based deployment using ASP .Net. There are about 50 core users and all are internal to the company.
We need an efficient way to try out different designs in order to investigate the information architecture of the site, the workflow, and the overall look and feel. Ideally, the prototype would look good enough to show to the users in order to gather feedback.
A few ajax-style drop-down menus or controls would be useful to demonstrate our ideas, but not at the expense of quick prototyping.
It feels too early to break out Visual Studio, and we need something more than pen and paper or Visio... Any suggestions?
Jeff Atwood had a nice article a while back about this:
http://www.codinghorror.com/blog/archives/001091.html
We used Visio the last project and while the Visio document screens look nearly identical to the end result I'd recommend against doing a pixel-perfect prototype. Simple rectangles and simple coloring are better and gives the designed and the web developers more freedom.
In our case some of the screens were developed by a person without good knowledge of limitations of web apps. Depending on the team members, this could lead to endless discussions about what is possible and what is not.
Have you taken a look at the excellent Balsamiq?
I use JustProto.com - it's very simple but works very fast. I regret there are no ready components to use but you can create your own masters.
Anyway - I did a few prototypes with JP and for me it's fine enough.
In the past we've used full page graphics - either pretty designs from our design team, or just Visio/PowerPoint (don't ask) mockups - dropped into HTML pages as a background and then added ImageMap links and dropped some dynamic controls on top - Drop-downs, pop-up/accordian menus etc to link most of them together.
This worked quite well in for A/B usability testing with our users - some were slightly confused by the pretty design versions, as they looked more like usable web pages, but they quickly got the hang of it.
For large systems, you really need something with masters/templates. Two good threads here on SO:
What tools are there:
https://stackoverflow.com/questions/156937/balsamiq-mockups-alternative-for-building-wireframes
Why mockup tool instead of IDE:
Whats the best way to create interactive application prototypes?
And here is the most complete list of mockup tools I know of:
http://c2.com/cgi/wiki?GuiPrototypingTools
(I am the author of this one: MockupScreens).
You can use Balsamiq mockups, is a very good software and easy to use for prototyping, mockups can make dynamic and complexity you need, not very expensive and has an evaluation version and limited version online.
If you want a much more complex software has components and functional and you can use Axure is a prototyping software very complete, you can export and test the prototype in the browser with all the features, I invite you to go to the official pages there you can find examples.
Balsamiq link: http://balsamiq.com/products/mockups/
Axure link: http://www.axure.com/

How can I make a framework for quickly building similar, but different, sites?

I have the need to build lots of sites that are very similar, but not exactly the same, using ASP.NET 2.0.
I'm trying to find the best way to make generating these sites quick and easy.
The sites will be used to collect information about a user, and there will be multiple steps for each site.
The sites will all collect similar information, but some sites may require less or more information than others. Additionally, certain form fields will need to be populated from different database tables, based on the site.
I would like to use a Microsoft patterns & practices solution, but I'm not sure that there is one that fits this scenario.
My current thinking is that I will put as much business logic as possible into an external assembly and then write a custom Web user control for each step for each site. I will include these user controls in a master page's Panel control.
I don't like this solution because each site will be nearly duplicating the code for the other sites.
How can I improve upon this design?
The main obstacle is that the sites are similar, but sufficiently different.
Thanks!
Alex
you can create base classes which handle all of the common functionality and then have your site specific controls inherit from their respective base classes and then implement their specific implementations.
We face this problem all the time. What we do is to have a common library that all our sites use, and to bury shared functionality in classes or utility modules in this library. Each site can then use those objects or utility functions as is, or extend the common classes. Keep in mind that these shared classes can include all kinds of things, including code-behind for pages and user controls that you can inherit from and extend.
Deciding what goes in the app and what goes in the common library is one of the hardest things about our business, though. Put it in the common library and you lose flexibility; put it in the app and you risk having duplicate code to maintain.
If you have a fairly complex database setup, it might be worth your time to come up with a framework for specifying your db schema in XML and having your app enforce that schema and build any additional SQL infrastructure that you need based on that definition (e.g. utility views, stored procedures, etc). We did this and it resulted in a huge productivity boost.
Have you looked into Monorail (www.castleproject.org) this is an implementation of themvc pattern, similar to Ruby on rails with a few nice view engines, I prefer Nvelocity.
from castle project as well you can use n implementation of ActiveRecord that makes life real nice. if you are on that trail also have a look at coln ramsay screencasts .
To be honest all ms solutions are real fat
another great thing about the castleproject is that is totally open source so you can learn loads from their code
How about using an Application Framework like DotNetNuke or mojoportal?
They both provide flexibility and enable you to develop websites very quickly with common functionality. Leaving you to develop custom modules where the functionality you require may be different. There are also thousands of other modules that can be bought which provide excellent functionality.
However we chose to use WCSF and enhanced upon it.
All the above mentioned projects are open source and some good examples of code to learn from.
I know it may be a late answer but I hope it helps

Resources