New theme: Marine
Submitted by kemie on Wed, 12/05/2007 - 09:21.
(moving this out of the other thread)
I just released a new theme, Marine with the help and infinite patience of Ryan :).
It is meant to be a simple, neutral theme, that also introduces a usability fix: it transforms the top user menu so it behaves like a normal dropdown, activating on mousover (and not on click as it was before) and making it clearer that it's a menu. In order to do this, it is necessary to apply a patch (the theme will not work without it).
Here's the theme project page and here's the patch.
Screenshot
Suggestions, comments and bug reports are very welcome!

Congratulations!
I'm using it it's awesome, i'd love to see it as the new PP default theme :)
Cheers.
Glad you like it tux!
feel free to report any bugs or requests! :)
First off - great work on the theme. It's clarity is astonishing in comparison to AC 0.71 original. I've really only got one request, a download link to the modified files as not all of us have SVN experience. I have NO CLUE how to install the patch, but am quite happy modifying the install and keeping a record of what I have modified. Many thanks.
!! As always please backup all files !!
-------------------------------------------------
In the file: application/layouts/account.php
--Remove the following line(s)
<?phpecho use_widget('UserBoxMenu')
?>
++Add the following line(s) in the same section
<?phpecho add_javascript_to_page('dropdown.js')
?>
-------------------------------------------------
In the file: application/layouts/administration.php
--Remove the following line(s)
<?phpecho use_widget('UserBoxMenu')
?>
++Add the following line(s) in the same section
<?phpecho add_javascript_to_page('dropdown.js')
?>
-------------------------------------------------
In the file: application/layouts/project_website.php
--Remove the following line(s)
<?phpecho use_widget('UserBoxMenu')
?>
++Add the following line(s) in the same section
<?phpecho add_javascript_to_page('dropdown.js')
?>
-------------------------------------------------
In the file: application/views/application/user_box.php
Replace the following line(s)
<div id="userbox">
<?php echo lang('welcome back', $_userbox_user->getDisplayName()) ?> (<a href="<?php echo get_url('access', 'logout') ?>" onclick="return confirm('<?php echo lang('confirm logout') ?>')"><?php echo lang('logout') ?></a>),
<ul>
<li><a href="<?php echo logged_user()->getAccountUrl() ?>"><?php echo lang('account') ?></a> <?php echo render_icon('bullet_drop_down.gif', '', array('id' => 'account_more_icon', 'class' => 'PopupMenuWidgetAttachTo', 'title' => lang('enable javascript'))) ?></li>
<?php if(isset($_userbox_projects) && is_array($_userbox_projects) && count($_userbox_projects)) { ?>
<li><a href="<?php echo get_url('dashboard', 'my_projects') ?>"><?php echo lang('projects') ?></a> <?php echo render_icon('bullet_drop_down.gif', '', array('id' => 'projects_more_icon', 'class' => 'PopupMenuWidgetAttachTo', 'title' => lang('enable javascript'))) ?></li>
<?php } // if ?>
<?php if(logged_user()->isAdministrator()) { ?>
<li><a href="<?php echo get_url('administration') ?>"><?php echo lang('administration') ?></a> <?php echo render_icon('bullet_drop_down.gif', '', array('id' => 'administration_more_icon', 'class' => 'PopupMenuWidgetAttachTo', 'title' => lang('enable javascript'))) ?></li>
<?php } // if ?>
</ul>
<div class="PopupMenuWidgetDiv" id="account_more_menu">
<p><?php echo lang('account') ?>:</p>
<ul>
<li><a href="<?php echo logged_user()->getEditProfileUrl() ?>"><?php echo lang('update profile') ?></a></li>
<li><a href="<?php echo logged_user()->getEditPasswordUrl() ?>"><?php echo lang('change password') ?></a></li>
<li><a href="<?php echo logged_user()->getUpdateAvatarUrl() ?>"><?php echo lang('update avatar') ?></a></li>
</ul>
<p><?php echo lang('more') ?>:</p>
<ul>
<li><a href="<?php echo get_url('dashboard', 'my_projects') ?>"><?php echo lang('my projects') ?></a></li>
<li><a href="<?php echo get_url('dashboard', 'my_tasks') ?>"><?php echo lang('my tasks') ?></a></li>
</ul>
</div>
<script type="text/javascript">
var account_drop_down = new App.widgets.UserBoxMenu('account_more_icon', 'account_more_menu');
account_drop_down.build();
</script>
<?php if(isset($_userbox_projects) && is_array($_userbox_projects) && count($_userbox_projects)) { ?>
<div class="PopupMenuWidgetDiv" id="projects_more_menu">
<p><?php echo lang('projects') ?>:</p>
<ul>
<?php foreach($_userbox_projects as $_userbox_project) { ?>
<li><a href="<?php echo $_userbox_project->getOverviewUrl() ?>"><?php echo clean($_userbox_project->getName()) ?></a></li>
<?php } // if ?>
</ul>
</div>
<script type="text/javascript">
var projects_drop_down = new App.widgets.UserBoxMenu('projects_more_icon', 'projects_more_menu');
projects_drop_down.build();
</script>
<?php } // if ?>
<?php if(logged_user()->isAdministrator()) { ?>
<div class="PopupMenuWidgetDiv" id="administration_more_menu">
<p><?php echo lang('administration') ?>:</p>
<ul>
<li><a href="<?php echo get_url('administration', 'company') ?>"><?php echo lang('company') ?></a></li>
<li><a href="<?php echo get_url('administration', 'members') ?>"><?php echo lang('members') ?></a></li>
<li><a href="<?php echo get_url('administration', 'clients') ?>"><?php echo lang('clients') ?></a></li>
<li><a href="<?php echo get_url('administration', 'projects') ?>"><?php echo lang('projects') ?></a></li>
<li><a href="<?php echo get_url('administration', 'configuration') ?>"><?php echo lang('configuration') ?></a></li>
<li><a href="<?php echo get_url('administration', 'tools') ?>"><?php echo lang('administration tools') ?></a></li>
<li><a href="<?php echo get_url('administration', 'upgrade') ?>"><?php echo lang('upgrade') ?></a></li>
</ul>
</div>
<script type="text/javascript">
var administration_drop_down = new App.widgets.UserBoxMenu('administration_more_icon', 'administration_more_menu');
administration_drop_down.build();
</script>
<?php } // if ?>
</div>
+++++++++With these line(s):
<div id="userbox"><p><?php echo lang('welcome back', $_userbox_user->getDisplayName()) ?> (<a href="<?php echo get_url('access', 'logout') ?>" onclick="return confirm('<?php echo lang('confirm logout') ?>')"><?php echo lang('logout') ?></a>)</p>
<ul id="account_more_menu">
<li><a href="<?php echo logged_user()->getAccountUrl() ?>"><?php echo lang('account') ?></a>
<ul>
<li>
<h6><?php echo lang('account') ?>:</h6>
</li>
<li><a href="<?php echo logged_user()->getEditProfileUrl() ?>"><?php echo lang('update profile') ?></a></li>
<li><a href="<?php echo logged_user()->getEditPasswordUrl() ?>"><?php echo lang('change password') ?></a></li>
<li><a href="<?php echo logged_user()->getUpdateAvatarUrl() ?>"><?php echo lang('update avatar') ?></a></li>
<li>
<h6><?php echo lang('more') ?>:</h6>
</li>
<li><a href="<?php echo get_url('dashboard', 'my_projects') ?>"><?php echo lang('my projects') ?></a></li>
<li><a href="<?php echo get_url('dashboard', 'my_tasks') ?>"><?php echo lang('my tasks') ?></a></li>
</ul>
</li>
<?php if(isset($_userbox_projects) && is_array($_userbox_projects) && count($_userbox_projects)) { ?>
<li><a href="<?php echo get_url('dashboard', 'my_projects') ?>"><?php echo lang('projects') ?></a>
<ul>
<?php foreach($_userbox_projects as $_userbox_project) { ?>
<li><a href="<?php echo $_userbox_project->getOverviewUrl() ?>"><?php echo clean($_userbox_project->getName()) ?></a></li>
<?php } // if ?>
</ul>
</li>
<?php } // if ?>
<?php if(logged_user()->isAdministrator()) { ?>
<li><a href="<?php echo get_url('administration') ?>"><?php echo lang('administration') ?></a>
<ul>
<li><a href="<?php echo get_url('administration', 'company') ?>"><?php echo lang('company') ?></a></li>
<li><a href="<?php echo get_url('administration', 'members') ?>"><?php echo lang('members') ?></a></li>
<li><a href="<?php echo get_url('administration', 'clients') ?>"><?php echo lang('clients') ?></a></li>
<li><a href="<?php echo get_url('administration', 'projects') ?>"><?php echo lang('projects') ?></a></li>
<li><a href="<?php echo get_url('administration', 'configuration') ?>"><?php echo lang('configuration') ?></a></li>
<li><a href="<?php echo get_url('administration', 'tools') ?>"><?php echo lang('administration tools') ?></a></li>
<li><a href="<?php echo get_url('administration', 'upgrade') ?>"><?php echo lang('upgrade') ?></a></li>
</ul>
</li>
<?php } // if ?>
</ul>
</div>
-------------------------------------------------
In the file: public/assets/javascript/dropdown.js
Add the following:
function menuFix() {var sfEls = document.getElementById("account_more_menu").getElementsByTagName("LI");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
// event added to keep menu items from disappearing
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
// event added to keep menu items from disappearing
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"), "");
}
}
}
//onload call
if (document.all) { // Load sfHover only in IE; other browsers don't need it
if (window.attachEvent) window.attachEvent("onload", menuFix);
else window.onload = menuFix; // Mac IE5 needs this
}
Its ok to have "NO CLUE" on how to install the patch, though I would point out there are pretty well laid out documents on how to do this here http://www.projectpier.org/patch/apply While I applaud xeta for writing this up, it will be much quicker to learn how to apply the patch. Plus, then you'll have a new skill =)
With a full time, one-man web development business, I find it hard to make time to learn skills that I have never needed before and don't anticipate using again any time soon. I do thank the user for writing that up for me and I also understand your thought process in trying to get users to be relatively self-sufficient.
Anyhow, I have gotten around all of this by unzipping the project pier files into a folder and applying the patch with tortoiseSVN through it's convenient context menu on a right click, then noting the changed files and then uploading them by FTP to my install.
I do not know how to apply patches by SVN on my web server, but this has worked just fine as the marine theme works PERFECTLY now and once again I must thank you for taking the time to make a semantically coded drop-down menu system and a great looking theme! Cheers.
Just to tell you guys that I just released an update for the marine theme.
It basically fixes bugs, especially in ie6, and makes the colors slightly more muted.