Versions of Drupal content - drupal

I'm working at a company that uses Drupal 6 to host documentation for it's SAAS products. The documentation is organized in various books using Book.module.
We have a Production Drupal site with the documentation for the production SAAS product.
Secondly, we have a "Preview" site, for the upcoming version of our product - the documentation is slightly different than on the Production site.
Thirdly, we have a "Development" site, which contains the unstable version of our product documentation. The documentation here changes frequently
Documents are originally authored on Development, moved to Preview, and then finally to Production.
It's quite unwieldy to manually update each Drupal site as our product evolves. I've looked at Deploy.module, and although it looks promising, it has limitations wrt books (ie: it can't handle the book structure/menus). It also makes for a solution that is quite complex with lots or moving parts.
I'm hoping that I've been over-thinking everything and some Drupal rockstar out there can point out an obvious (or not-so-obvious) solution.
(An obvious non-drupal solution would probably just be store the documentation pages as html in version control and update each site with the appropriate revision. But with this I lose the ACL functionality that Drupal is so good at.)
Thoughts?
Cheers

I've had good luck with the Feeds module to get one site to consume a certain view from another site when I choose or periodically. It will take some configuration work to get going but it's more flexible than a turn-key solution and it's less fragile than any SQL dump -> import of the node revisions table.

Related

wordpress-mu or drupal?

I am in education and I want a framework that allows me to manage the toolbox Teachers (Blog with features) and student blogs.
I want to choose between wordpress-mu and drupal, but I do not know which to choose:
here are my needs:
multiblogging-user (one blog for each user for the site)
gradebook (to grade Assignments for students)
post-it (or to do list for teacher)
I want to access the platform through a remote client (in php) using the protocol by exmple xml rpc
I just searched in google, wordpress and drupal. I realized that drupal for me because it offers such services module, gradebook module, and blogs module (which provides the default multiblogging)
I also saw that wordpress is earlier oriented blogging.
Drupal is he really the right choice?
someone else would be other compelling arguments that corroborate this choice
While Wordpress has a larger userbase, Drupal is far more conservative about what gets into core. The qa process is slightly better. The end result is that writing custom modules and using the GUI as much as possible to make your system meet your requirement is a much nicer experience.
With wordpress is code horrors such as: a two similarly named functions but one with an underscore prefixed. The prefixed function includes an echo statement while the other returns the entity. Bad duplication of code!
Wordpress 3rd party plugins tend to be nightmare to maintain as even with incremental releases of Wordpress plugin support may be broken.
Upgrading Drupal modules is usually alot safer!
I've heard good things about moodle too which is an open source project aimed at education institutions.
One of the main gripes about Drupal is that the admin is hard to use. Whereas Wordpress is much easier. With the arrival of Drupal 7 last year, the Ux has improved significantly.
Wordpress has a great wsysiwyg bundled editor. With Drupal there is none bundled. I would suggest you avoid giving your users full blown HTML, and opt for a limited subset of HTML tags. Ckeditor, imce, imce bridge and wysiwyg module will help you there.
Sometimes with Drupal 7 very popular modules are still only avilable to Drupal 6.
The only time I ever use Wordpress is when I need a blog and thats it. Anything more then I go Drupal. Anything more involved than that usually zend framework or similar.
Good luck!

Developing a newspaper site in Drupal

I need to develop a newspaper site in Drupal, I've already played around with Drupal a little, and I think I know which modules would best suit my purposes. Naturally, one of the modules I'll be needing to use most is Views, but I have a couple of questions:
Because this is a content-intensive site, I was wondering if using 5-6 views on each page to generate node teaser + thumbnail lists would impact performance adversely?
I am a designer with significant front-end development experience. Like I said I've played around with Drupal quite a bit and other than running into a few hurdles which I eventually overcame, for the most part I was able to get it to do what I needed it to. Having said that, does one also need strong programming skills to fully develop a site in Drupal?
Thank you very much for your help!
Jane
Views offers caching and Drupal also has block caching, which should help you improve performance. The SQL that Views generates is never as good as handwritten SQL, but if you make simple Views, the SQL is actually quite good and not a performance problem (unless you have millions of page views).
If you can create the features you need, with modules from Drupal.org, you don't need strong developer skills. But you do need to know some PHP to make a Drupal theme which is what controls the layout of the site. It will also be a great help, in understanding the Drupal theming system, but not a requirement.
First off, check out openpublishapp.com for a Drupal distro that is made for publishers from the ground up, it's pretty hot.
To answer your questions:
1) As far as performance and views goes, having 5-6 views on a page is a normal requirement for a drupal news site and the performance issues are usually handled by views/panel cache, and using a page cache like Varnish in front of a web server, Object caches like Memcached (for the DB) and opcode caches like APC...if you don't want to learn all that off the bat you should still be fine if your traffic isn't too intense (but go sign up at getpantheon.com for awesome hosting with all of that and the kitchen sink, and check out groups.drupal.org/pantheon)
2) If the functionality exists by way of core/contrib modules, to fully develop a site for the most part one only needs to understand enough PHP to theme, and often with starter themes like Fusion, and some of the others you hardly even need that, just an understanding of how they work and are extended (which is well documented). That said, if you want functionality that doesn't exist, you'll have to code it, or have someone code it for which strong programming skills are desired, but not necessarily required :)
Even I recommend the use of the OPENPUBLISH - https://www.acquia.com/solutions/publishing
On top of to this you can make an efficient usage of
1. APC - PHP byte-code caching
2. Drupal Caching - block/template/view level caching
3. Boost - Caching module which doesn’t need any external tools
4. Varnish - HTTP accelerator
5. Memcache - Data intensive content.
Apart from this you will also need to think effectively on deciding on DEPLOYMENT ARCHITECTURE of the site - preferably Acquia or Amazon environment.
Learning curve may vary depending on your current skills in PHP or Drupal. Usage of already established distribution like OPENPUBLISH may help you to minimize the dependability on too much custom coding.

Wordpress pages and version control

We are a software development company and are using Wordpress for static portion of the web site. Naturally, all our workflow is built around version control: multiple developers -> continious integration -> staging -> deployment.
Our challenge with integrating Wordpress into our workflow is that its database is stuck like a bone in the throat: you cannot put it into the version control, easily roll back, promote from staging to production etc.
I am wondering what people do in similar situations? I would like to find a way to integrate WP into the development workflow and not the other way around :-)
Clarification we want to "develop" and test pages on the staging system and when ready then move them over to the production as part of the version upgrade process. We don't want to do full replication of the staging database to production.
That's a common question and one that I've worked on tackling. I've written some code to address these issues albeit the code's not ready for distribution. Basically the idea is to create scripts to import the content and then version control the scripts. (Actually my approach uses a custom import/export format designed to be easy to hand-modify, but the idea is similar.)
Anyway, there are some related questions over on StackOverflow's sister site WordPress Answers:
Questions tagged with the term [staging]
Questions tagged with the term [deploy]
UPDATE
Per the clarification, this would probably be helpful too:
Is there any way to draft a revision of a published page or post? What workarounds have you used?
Hope this helps.
-Mike
I've just hit the same problem. For now we are using MySQL dump files to export/import database content, but it gets ugly with several people working on the database changes.
Since the team that works on the project is all internal and consists of just a few people, I'm thinking into the direction of locking the database dump file in VCS. Subversion had this functionality built-in, but we are using git, which, I think, is conceptually opposite of any kind of locking.
Probably we'll have a workaround script with pre-commit hook to check for the existence of a lock file next to the dump. The person who committed the lock file will be the only one allowed to commit the dump. Once he finishes the work, he will need to commit the removal of the lock file.
It sounds ugly, I know. But I've thought about it for a while and don't see an elegant solution yet.
If you're only using WordPress for static content, then any tool/methodology for version controlling databases should work - for example, work the mysql command line tools into your CI and deployment routines.

Comparisons of DotNetNuke with other CMS's/Web Application Frameworks such as WordPress or CodeIgniter

I have never used DotNetNuke before. I'm thinking about giving it a try to help me build websites, and I'd like to hear from other developers who are in a position to compare DotNetNuke with other CMS's/Web Application Frameworks.
I have used both DNN and Drupal to build fairly large, content-based sites. My focus is more on the production side... UI/themeing, module configuration, etc. I'm sold on Drupal, but there may be other choices that meet your needs just as well. I just happened to work with both systems in recent months.
Drupal's core taxonomy module gives you the benefit of creating a relationship between different kinds of content. If you have "article" and "video" content types, you can easily display data from both types based on the shared taxonomy terms. This is huge and something DNN lacks.
Drupal's hook system is also a big benefit when building your own modules or creating "sub-modules" to alter or add to the default functionality of an existing module. This allows you to customize functionality or take advantage of another module's functionality as your application runs. If you purchase a module for DNN, you will have to alter the module if it doesn't meet your needs. Once you do this, you will need to update it each time there's a new release that you would like to take advantage of. DNN modules seem to be more stand-alone solutions. For example, if a DNN module has a rating system, it's only a part of that solution. With Drupal, I can use the "5 Star" rating module in my forums, my blogs, my articles, my videos, etc. There's central configuration for it and I only theme it once.
The themeing layer in Drupal also gives you a large amount of flexibility in that process. My frustration with themeing DNN sites was that I was stuck working with the markup the developer used, with no option for altering the output without hacking the module. With theme hooks and function overrides, I can change the output from those modules to meet my needs (not completely sometimes, but enough), without touching the module code itself.
The biggest problem I had with DNN modules, including some of the most popular, was just a lack of documentation or discussions available for how to achieve your goal. While Drupal's forums can be hard to navigate and you might not always find the answer you are looking for, there are many outlets for gathering information. Honestly, using DNN made me appreciate the community approach of Drupal more.
I was left feeling that DNN would be fine for building sites with more basic needs. But for that, I would still choose something like WordPress or Joomla, considering they have much larger user bases and, in my opinion, are more sophisticated.
Hope this helps you some.
DNN is a pretty good .NET solution for CMS. If you want more flexibility, I would look at SiteFinity for .NET CMS systems. This is a very flexible and elegant CMS for .NET
If you venture out of .NET and want to look at PHP solutions, then DRUPAL, JOOMLA, and WORDPRESS are best solutions. Some comments about each:
WORDPRESS - Is the simplest and most elegant CMS to work with. Originally a blogging software, it has a super-easy user interface, although that also reads as more limited power and features. It's excellent for content driven websites and templates are easily built.
DRUPAL - Is very flexible and configurable, but I find it more complicated than the others. The Admin interface requires more programming knowledge to pull off and adding components and extras is a little more complicated. But, DRUPAL has been proven in the business and government world as a secure and reliable CMS.
JOOMLA - Is my personal favorite. It is also very powerful and I prefer the Admin. interface. Joomla allows for much flexibility and has the most user created modules and plug-ins out there. You have to invent near nothing with this one. I am biased in favor of Joomla, because I use it the most. That said, it has limiting factors against DRUPAL, such as user security features. But this is being fixed in the next upgrade.
Hope that helps as well.
I have development experience using both DNN and Drupal to build content-rich websites. My preference is Drupal for a number of reasons:
Development time-line was shorter; I was able to produce more in less time.
Drupal has a larger and more active developer community. More resources are available to aid in development.
DNN is not actually a CMS. It is only a framework; Drupal is a framework with a foundational CMS.
Drupal is easier to install.
DNN modules cost money; Drupal modules are free.
Actually, I put together some notes a while back when trying to understand the architectural differences between DNN and Drupal. Found those notes, they are here: DNN versus Drupal. Hope this is helpful.
I experienced a fairly high degree of frustration when working with DNN and I don't believe I am alone in that regard. About a year ago, ASPdotnetStoreFront abandoned their involvement with DNN calling it a "disaster to work with".
I am curious to know what piqued your interest in DNN and if you have a specific website project in mind. Regardless, I wish you success and I hope this helps.
I worked in a .NET development shop utilizing Kentico CMS. I agree, it is feature rich and stable. The API and DB are documented well. Overall, it is a great CMS. There is a limited free version: http://www.kentico.com/freecms.aspx
I'm testing out DNN right now. So far, so good, but I think it depends a lot on what you are using it for. I've only been looking at it for 3 days, but so far I do find the documentation lacking or outdated.
I evaluated many of the different Portal/CMS systems out there back in 2004 and DotNetNuke ended up being my choice and I've been very pleased with it, for everything but E-Commerce, ever since. DotNetNuke is endlessly extensible, easy to skin, easy for non-technical folks to update, has a great 3rd party eco-system, and the development team is very active and talented. There isn't a great Articles module in the core but there are several really good ones available from 3rd parties for a reasonable price.
I tried using Joomla a few years ago and hated it. Wordpress is good for a blog style site but doesn't have nearly the power or flexibility of something like DNN. I am intrigued by SiteFinity, Umbraco, and Kentico for sites where all that's really needed is a CMS, but not enough that I've bothered trying them over DNN.
Another good .NET solution - from what I've read - is Umbraco.
Take a look at Kentico CMS. It's commercial, but still affordable. In my experience from dozens of projects on both CMS, Kentico is much more feature-rich, stable and well documented.

Working with version control on a Drupal/CMS project

I was wondering how teams that develop sites using Drupal (or any other CMS) integrate version control, subversion, git or similar, into their workflow. You'd obviously want your custom code and theme files under version control but when you use a CMS such as Drupal a lot of the work consists of configuring modules and settings all of which is stored in the database.
So when you are a team of developers, how do you collaborate on a project like this? Dumping the database into a file and putting that file under version control might work I guess, but when the site is live the client is constantly adding content which makes syncing a bit problematic.
I'd love to know how others are doing this.
You are correct that this is an issue for Drupal--version control works fine until you turn the site over to your client or open it up to users.
Your question seems like a more specific version of this one, which touched on version control in the Drupal workflow. You may find some answers there that help.
For some projects, I have exported all of the views to code, using that feature of the Views module, and I have one project where all of the blocks have been exported, as well. (Although that was a development exercise and not a customary thing to do with blocks.)
Take a look at the work that Development Seed is doing to work around this problem. They are leading the development of the Context, Features, and Spaces modules that work together to store configuration data in modules (outside of the DB) so that it can be versioned with the code.
There is a Drupal group called Packaging & Deployment for discussing the various solutions that are being developed for this issue.
Right now there are a lot of efforts towards creating something that will handle the dev -> production difficulties with drupal in relation to the database. Features, that flaminglogos mentioned is one, but I feel that is more focused on creating stand alone projects, ie ones that would be installed on many sites.
For simple maintaining you dev and prod databases I'd take a look at http://drupal.org/project/deploy and http://drupal.org/project/dbscripts. They support syncing and merging db side drupal config data.
I can't guarantee they are ready for prime time though...
There is a lot of effort of shipping the next drupal version with configuration in code. That's is the key to have it in a version system.
For now you can use the features module, with that you can export things like content types, views, etc. to code, and then compare, version and revert it as you need.

Resources