Home / Blog

Too many opinions and suggestions are worse than none.

IMHO developers either know and understand Apache rewrites like the back of their hand, or not at all. It is a bit of an obscure art, as the need for it does not tend to pop up every day.

Yet I was determined that going forward "index.php" in urls would not be tolerated. A url that includes "index.php" presents a dated site appearance to the few who notice. More importantly, eliminating it frees up 8 characters in a space better used for SEO.

The below is tested and proven to work with eZ Publish 4.4 on Media Temple DV servers up to DV 4.0

1. At install time, remove the "index.php" from the default access urls for users and admin

2. In /settings/override/site.ini.append [SiteAccessSettings] add line - ForceVirtualHost=true

3. .htaccess file looks like this

RewriteEngine On
RewriteRule content/treemenu/? index_treemenu.phpRewriteRule ^index_treemenu\.php - [L]
RewriteRule !(\.(gif|jpe?g?|png|css|js|swf|html?)|var(.+)storage.pdf(.+)\.pdf)$ index.php
DirectoryIndex index.php

Caveat

The admin pages are no longer accessible from the link prepared by the installer. The admin pages are accessible using a "short" path of <domain>/<admin-name-from-installer>. In my case http://nbmpa.org/nbmpa_admin, with nbmpa_admin being the name I used for the administrator at install time.

no_index_php

No index.php in the url, yeah!

Warning some graphic physical violence.

animated

Less than 5 minutes start to finish to create the above using instructions below.

PNG is the default format for screen captures in recent versions of OS X.

However most image formats are supported natively. All that is required is to tell your local machine which format you prefer for saving image files.

Switch the default screen capture format to gif by opening a terminal window and entering these commands..

defaults write com.apple.screencapture type gif; killall SystemUIServer

"killall SystemUIServer" is the second instruction if not visible in your browser. It saves having to logout and back in to effect the change.

To switch back to PNG after capturing gifs..

defaults write com.apple.screencapture type png; killall SystemUIServer

With screencapture type set to gif, perform periodic screen captures at each stage of progress.

I sized the textedit window to a reasonable size for Web browser display, then used Cmd-Shift-4-spacebar and selected the textedit window to record each step of progress. Do not worry about the file names at this point.

When finished with captures, review the files in Finder..

review-gifs
  • set file ordering to display oldest to newest
  • set file display style to Cover Flow
  • select the first file in sequence
  • click spacebar to preview it
  • down arrow to move through files as preview of final animated version

Begin creating the animation by opening the last and final GIF in the Preview app by dragging it from Finder to Preview icon in the dock. If you start with the first file in the order, it will be moved into last position in finished product.

Then in Preview.app View->Sidebar->Show Sidebar to open up a sidebar that acts as a hot zone for collecting the rest of the gif files.

In Finder, select all the other files to include with this animation. Drag and drop them directly on top of the icon for the original file in the sidebar. Dropping them on open space in sidebar will not add them to the original.

  • Down arrow through the sidebar images to preview the finished animated gif
  • If anything is out of order, re-order images by dragging and dropping them to correct locations in the sidebar
  • When satsified, save the finished product as a gif file. I named mine "animated.gif"

Drag the completed product from a finder window and drop it on a browser icon in the dock. Safari, Opera, Firefox all seem to work fine. Verify the final version works as desired.

Place the file in a Web accessible location, like /Library/Webserver/Documents folder on the local machine, to serve it as a web page.

Thanks to Robert Harder and pantyo.com for basics and inspiration.

-- http://blog.iharder.net/2009/10/22/gif-create-animated-gifs-with-mac-os-x-preview-app/

Ezwebin is the eZ Publish Web Interface extension that simplifies creating and maintaining web content in a traditional CMS style.

eZ Flow is another such extension developed and maintained by the eZ Systems developers. eZ Flow explores the very latest design features like device dependence and time scheduled publishing-unpublishing.

Both extensions are so feature laden they would require a book to describe the inner workings and how to use them. The code developers show no inclination to write such a book. Even if they commissioned one, the frantic development pace would outdate the book shortly after it was put to ink.

If there is written documentation regarding use of the "image map" feature for banner images in the ezwebin extension, I could not dig it up in half a days search. So it was time to go debugging this useful feature to figure out how to use it. I will spare the debugging details, the usage details are below.

Image Maps Definition

Image maps are clickable overlays of html images on a web page that act as hyperlinks to other content. The MAP tagging is standard html, defining the regions is a bit of an art form. More MAP tag info at w3schools.com

Simple Image Map Generation

This online image map generator quickly brings newbies up to speed by supplying examples via automated code generation.

A Picture is Worth a Thousand Words

The image map for the banner on the front page of lakedata.net circa December, 2010.

ezwebin_banner_image_map

image map for ezwebin banner

Sample Code

<map id="#banner_map" name="banner_map">

<area shape="rect" coords="1,24,125,129" href="http://innovation" alt="A Decade Makes a Difference" />

<area shape="rect" coords="304,2,446,147" href="http://Crazy-Apple" alt="Crazy Apple" />

<area shape="rect" coords="632,17,759,133" href="http://Mobile" alt="Mobile Future is Here!" />

</map>

Because the CSS is custom for each page, a standard naming convention of #banner_map is used.

That was the missing piece of information that required a debugging session to discover.

It really works, and it really works slick.

Get the Find My iPhone app, install it on the iPad.

First time it opens, you will be prompted to sign up for the free version of Mobile Me if you are not already a Mobile Me subscriber. The current free version is dedicated simply to finding iDevices.

Then on a computer, login in to http://me.com and enter the Mobile Me credentials that apply to the device to be found.

FindPhoneSearching

Find My iPad, Searching

FindPhoneFound

Find My iPad, Found

FindPhoneSendMessage

Find My iPad, Send Message

Find My iPad, Message Sent

What it looks and sounds like on the iPad. http://lakedata.net/index.php/eng/Apple/Find-My-iPhone

Multi-tasking on the iPad .. http://www.gilsmethod.com/multitask-ipad-ios42

ios 4.2 on iPad where did the screen orientation lock go? Double-tap home key, scroll to far left of bottom pane. See Multi-tasking link for more info.

Ever run into this situation?

Start out with a nice clean test install named something unremarkable like "ezwebin".

Then play with it until it fleshes out into something of substance, to the point it is useful. A hearing museum in this case.

Feel stuck with this unremarkable and not descriptive name for a remarkable new project?

I know there are many eZ provided facilities to achieve the results and move an installation. For me, this makes sense on my local OS X testbed, and takes little more time to perform than it does to read.

This is the most minimalist way I have found to rename my eZ projects. These steps tested and proven on ezwebin extension at eZ Publish revision 4.3.

Assumes log in as a user with sufficient privileges.

General Info -- The httpdocs directory in OS X is /Library/Webserver/Documents

Make a Copy

cd /Library/Webserver/Documents
cp -Rp <existing folder> <new folder> in this case cp -Rp ezwebin com_hearingmuseum
cd com_hearingmuseum

Make the Necessary Changes to eZ files just Copied.

  • settings/override/site.ini.append.php -- replace "ezewbin" with "com_hearingmuseum"
  • Search the /setttings/siteaccess/* directory structure and edit any site.ini.append lines that reference the old path to reflect the path change. Same as step 1.

Change some Database entries, in this case 7 places in two different tables.

  • Search the database for the old path "localhost/ezwebin" and replace with "localhost/com_hearingmuseum" I use phpMyAdmin for this step.

Manually clear the caches by deleting all files in these directories

/Library/Webserver/Documents/com_hearingmuseum

  • /var/cache/
  • var/ezwebin/cache

Spotlight search the com_hearingmuseum folder structure for "localhost/ezwebin" inside files.

In this case, found one at:

/var/storage/packages/local/images/ezcontentclass/class-image.xml

Replaced that text with "localhost/com_hearingmuseum"

Load up http://localhost/com_hearingmuseum

Hope this works as well for any interested as it does for me.

http://share.ez.no/blogs/doug-brethower/rename-an-ez-publish-installation-on-os-x

Tweets are the original Web answer to "What are you doing right now?".

Besides an amusing diversion for the self-absorbed, they can be a wonderful time tracker for those trying to get stuff done.

When watching the return value, the instant Web publishing hit can be more than a little addictive. It can become an end unto itself, even a business, think Guy Kawasaki and alltop.com.

Working at the command line interface (cli), keeps it clean and fast to keep your day moving without cognizant interruption. Think, and thank, Binny VA. binnyva.blogspot.com

Happy muddling along for 3 plus years with a fast clean curl implementation came to an end September 2010. Twitter no longer allows the --basic authentication that made that possible. It once was one line, broken into three here for clear display.

curl --basic --user "name:password" --data-ascii 
"status=`echo $@|tr ' ' '+'`" 
"http://twitter.com/statuses/update.json" 

Saved as "tw" in a location on the users PATH, call it from cli passing the tweet as the only necessary parameter, like this:

tweet from cli

tweeting from the command line

Difficult to imagine a cleaner more straightforward mechanism for cli types to tweet.

oauth

The new way to authenticate, oauth, is better for twitter. Will surely be better for all twitter users in the long run. But it breaks anything that still depends on --basic authentication. Like the simple one line script above.

Twitter has apparently been warning developers for months. Those of us just running simple hacks were caught unaware on September 02, 2010, when basic authentication just stopped working.

The Fix

I know most will thrill to the intricacies of oauth as much as me. Don't know, don't care, just tell me something that will fix what is broken.

What You Need - Registration Required

Four essential pieces of information and a small library to handle the oauth connection.

The consumer key and consumer secret are provided by twitter when the developer registers an app with them. Anybody accessing the twitter api is now forced to be a registered developer. Better for advance notifications for sure!

The name of this app registered with twitter is wpm-tw-api-localtracker. The app name displays as the source any time status messages are sent to the twitter servers and displayed online. My pet name for the app when it was a command line script was twittertracker, because it saved a copy to a local database for quick future reference to every tweet ever made. So much for history, on with the details.

Raj Deut article on sitepoint explains getting those four pieces of information and the oauth libraries better than I could ever hope to.

  • consumer_key
  • consumer_secret
  • accessToken
  • accessTokenSecret

The accessToken and accessTokenSecret are specific to each user. Each user must already have a twitter account.

So two items per app, two items per user, then ready to oauthenticate using two files, the bottom two in the image below, in what is called the twitteroauth library by Abraham Williams available here.. There is a lot more stuff in the download, but those two files are the essence.

twitter oauth library

twitter oauth library

All that remains is to make the oauth call into the library with the 4 crucial pieces of information, then when authenticated, send the tweet.

Authenticated=Good, verify user name, if that checks out, send a tweet, a "status" update in twitter api terms.

-----twittersaver.php file for testing------------------------

require_once("abraham/twitteroauth/twitteroauth.php");

$oauth = new TwitterOAuth(consumer_key, consumer_secret, accessToken, accessTokenSecret);

$credentials = $oauth->get("account/verify_credentials");

echo "Connected as @" . $credentials->screen_name;

$oauth->post('statuses/update', array('status' => "Thanks Raj Deut Sitepoint, very nicely done."));?>

-----------------------------------------------------

When this is working, remove the "echo" line and switch 'status' => "Thanks Raj Deut Sitepoint, very nicely done.", to 'status' => $_REQUEST[status]

Then make a curl call from cli to script tw, the text entered will fill in a the echo location, and ultimately the _REQUEST[status]

 curl --data-ascii "status=`echo $@|tr ' ' '+'`"
 "http://localhost/twittersaver.php"

Review of the Review

eZ Publish topped the 2010 list of best open source CMS at TopTenReviews.com. http://cms-software-review.toptenreviews.com/ That made me curious about the credentials of the toptenreview.com editors. Not because I don't support their findings, but because I wondered what makes a toptenreview.com more legit than any other review. There is not much to support their expertise on their site, and it seems that you can find a review to support just about any conclusion you believe in these days.

Finding nothing on their site to support their supposed expertise, my next step was reading the reviewer comments to decide for myself expertise or bias. I had reviewed for my own purpose the top four and Mambo a few years back when looking to move into something more complete and easier to admin than Wordpress.

While I would still like to see some credentials to support the expertise of their reviews, my review of their review left me favorably impressed. In depth knowledge of what is required in a CMS was evident, the feature sets were reported accurately, and best of all the summaries were spot on.

Reading below the headlines, toptenreviews.com accurately reports that each of the top four is a great CMS design. But each of them is geared for a different kind of audience and purpose. Each attracts a loyal following by doing what they do best.

A summary of the summaries.

eZ is number one based upon the reviewed feature set. But to use all that power requires somebody who understands core Web development functionality.

Wordpress is easiest to set up and use, plenty powerful for light duty, an obvious choice for simple requirements.

Drupal is extraordinary light on resources by virtue of being more or less a kernel. Very little functionality is included out of the box, third party extensions are required to do just about anything with it. Lots of extensions means lots of extensions to manage.

Joomla is a good overall blend of features versus ease of use. Not not quite as powerful as eZ, not nearly as simple as Wordpress. But easier for a layman to comprehend than eZ, and far more powerful than Wordpress.

Bingo, toptenreviews goes 4 for 4 on the summations.

Not Covered

Update cycles and ease of upgrades is a consideration that really should be addressed for those seeking the best CMS for their purpose. Software has to move forward just to keep up. eZ is on a 6 month upgrade cycle which is nice for staying on cutting edge. That said, eZ upgrades can be a bear. Not sure how this relates to the other offerings. My experience is Wordpress is much easier to upgrade. With far fewer features to manage, it should be.

Ease of wholesale data transfer into and out of the system is another high impact feature that is not addressed. Actively developed extensions ease the burden in eZ. Not sure how the other offerings compare. My experience is that moving up from Wordpress is a complete manual transfer. Basically a cut and paste of all existing content, very time consuming. But very nice that the editing interface in eZ seems to capture the html formatting from wp reasonably well.

Overall, very pleased with the thorough and accurate coverage by toptenreviews. Whomever the mystery reporters are, they do a great job in this man's humble opinion.

One last thing not covered, at least I could not find it, is the requirements for being included in the top ten. Perhaps reported size of the development community? I personally would love to see Concrete5 thrown in. It looks very promising upon cursory install and use. Seems to be the Portland, OR equivalent of eZ Publish beginnings with a designed MVC code base and core development group. Concrete5 also has by far the best embedded sales spiels of any CMS I have ever downloaded, and I have downloaded a bunch.

Running the ezflowupgrade.php script in the unzipped 4.3 package result is..

"Configuring...An unexpected error has occurred. Please contact the webmaster."

The fix is to edit /settings/site.ini and be sure the database settings are correct. In this case, there was no information filled in in at all.

Leading me to suspect the settings files were not copied earlier, missed a step. This was not the case.

In this version, the ezflowupgrade.php script is picking up database settings from /settings/site.ini when the use of that location is apparently deprecated in favor of more specific settings.

Regardless, to make it run, fill in the db information and the script will then make it past the "Configuring.. unexpected error"