Skip to content

Commit

Permalink
Moved some of the footer links to the per page nav bar.
Browse files Browse the repository at this point in the history
Some of the links are in a toggle-able extra menu, though maybe this
would be better as a drop-down.

Also, the revision browsing links are gone entirely. I want to
reimplement this as its own toolbar.
  • Loading branch information
autarch committed Jul 31, 2009
1 parent dd0a91c commit 49f36c9
Show file tree
Hide file tree
Showing 7 changed files with 311 additions and 91 deletions.
1 change: 1 addition & 0 deletions root/base/header.tt
Expand Up @@ -28,6 +28,7 @@
<script type="text/javascript" src="[%c.uri_for_static('js/jquery.inplace.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/jquery.autocomplete.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/jquery.cookies.2.0.1.min.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/ui.position.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/wiki.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/swfupload.js')%]"></script>
<script type="text/javascript" src="[%c.uri_for_static('js/swfupload.queue.js')%]"></script>
Expand Down
14 changes: 13 additions & 1 deletion root/base/navbar.tt
Expand Up @@ -66,7 +66,6 @@
<li><a title="[%loc('Page meta information')%]" href="[% c.uri_for('info')%]" accesskey="I">[%loc('Page History')%]</a></li>
[% END %]

<li><a href="[% c.uri_for('list') %]" title="[% loc('Alphabetically sorted list of pages') %]" accesskey="A">[% loc('Sub pages') %]</a></li>
[% IF ( c.model('DBIC::Person').get_user(page.name) ) %]
[% IF (c.req.action=="profile") +%]
<li class="navOn">[% loc('Profile') %]</li>
Expand All @@ -79,5 +78,18 @@
<li><a title="[% loc('User Settings') %]" href="[% c.uri_for(user.link,'.prefs') %]">[% loc('Preferences') %]</a></li>
[% END %]
[% END +%]

<li>
<a id="page_tools_toggle" href="#" title="More Page Tools">Tools</a>
</li>
</ul>
</div>

<div id="page_tools" style="display: none">
<ul>
<li><a href="[% c.uri_for('list') %]" title="[% loc('List of pages under this page') %]">[% loc('Sub pages') %]</a></li>
<li><a title="[%loc('Format page for printing')%]" href="[%c.uri_for('print')%]">[%loc('Print view')%]</a></li>
<li><a title="[%loc('Subscribe to page changes')%]" href="[%c.uri_for('rss')%]">RSS</a></li>
<li><a title="[%loc('Inline view for including content')%]" href="[%c.uri_for('inline')%]">[%loc('Inline')%]</a></li>
</ul>
</div>
64 changes: 6 additions & 58 deletions root/base/page/bottomnav.tt
Expand Up @@ -7,73 +7,21 @@
</div>
[% END %]
<div id="bottomnav">
<ul>
[% IF (!rev OR rev==page.content_version) %]
[% IF page.content_version && page.content_version > 1 +%]
<li>
<a title="[%loc('See previous revision')%]" href="[% c.uri_for('view', {rev=> page.content_version - 1}) %]" accesskey="R">[%loc('Back in time')%]</a>
([% page.content.max_version%] [% loc('revision') %][% IF page.content_version > 1; "s" ; END %])
</li>
[% END %]
[% IF (page.content_version AND page.content.max_version AND page.content_version < page.content.max_version) +%]
<li>
<a title="[%loc('See next revision')%]" href="[% c.uri_for('view',{ rev=> page.content_version + 1 }) %]" accesskey="R">[%loc('Forward in time')%]</a> ([% loc('x more',page.content.max_version - page.content_version )%])
</li>
[% END %]
[% ELSE %]
[% IF (rev AND page.content.max_version AND rev < page.content.max_version) +%]
<li>
<a "title="[%loc('See next revision')%]" href="[% c.uri_for('view',{ rev => rev + 1 }) %]" accesskey="R">[%loc('Forward in time')%]</a> ([% loc('x more',page.content.max_version - rev) %])
</li>
[% END %]
[% IF rev AND rev > 1 +%]
<li>
<a title="[% loc('See previous revision') %]" href="[% c.uri_for('view', { rev=> rev - 1 })%]" accesskey="R">[%loc('Back in time')%]</a> ([% loc('x more', rev - 1) %])
</li>
[% END %]
[% UNLESS rev||0 == page.content_version||0 +%]
<li>
<a title="[%loc('Back to the page')%]" href="[% c.uri_for('view')%]" accesskey="C">[%loc('Current Revision')%]</a>
</li>
[% END %]
[% END %]
[% IF page.content_version && page.content_version > 1 +%]
<li>
<span id="show_changes">
<a title="[%loc('Show differences from previous version')%]" href="[%c.uri_for('jsrpc/diff', page.id , rev)%]" rel="nofollow" class="toggleChanges">[%loc('See changes')%]</a>
</span>
<span id="hide_changes" class="display-none">
<a title="[%loc('Show normal page')%]" href="[%c.uri_for('jsrpc/diff', page.id , rev) %]" rel="nofollow" class="toggleChanges">[%loc('Hide changes')%]</a>
</span>
</li>
[% END +%]
</ul>
<ul>
<li>
<span class="title">[% loc('Views') %]: <a title="[%loc('Format page for printing')%]" href="[%c.uri_for('print')%]">[%loc('Print')%]</a></span>
<a title="[%loc('Subscribe to page changes')%]" href="[%c.uri_for('rss')%]">RSS</a>
<a title="[%loc('Inline for including content')%]" href="[%c.uri_for('inline')%]">[%loc('Inline')%]</a>
[% IF c.req.params.rev %]
[% PROCESS page/rollback.tt | indent 6 %]
[% END %]
</li>

[% IF user.is_admin +%]
<ul id="site_settings">
<li><a title="[%loc('Change site settings')%]" href="[%c.uri_for('/.admin')%]" rel="nofollow">[%loc('Site settings')%]</a></li>
</ul>
[% END %]

<ul>
[%# TODO: this needs to become a dropdown -%]
[% SET redir = c.uri_for(c.req.path) +%]
<li class="set-language-navbar">
<span class="title">[% loc('Set language') %]:</span>
<span class="title">[% loc('Language') %]:</span>
[% FOREACH lang IN ['en','de','fr','ja','no','ca','es','pl','ru'] +%]
<a href="[% c.uri_for('set_lang',{lang=>lang,redir=>redir}) | html %]">[%lang%]</a>
[% END +%]
</li>
</ul>

[% IF user.is_admin +%]
<ul>
<li id="site_settings"><a title="[%loc('Change site settings')%]" href="[%c.uri_for('/.admin')%]" rel="nofollow">[%loc('Site settings')%]</a></li>
</ul>
[% END %]

</div>
225 changes: 225 additions & 0 deletions root/static/js/ui.position.js
@@ -0,0 +1,225 @@
/*
* jQuery UI Position @VERSION
*
* Copyright (c) 2009 AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
* http://docs.jquery.com/UI/Position
*/
(function($) {

$.ui = $.ui || {};

var horizontalPositions = /left|center|right/,
horizontalDefault = 'center',
verticalPositions = /top|center|bottom/,
verticalDefault = 'center',
_position = $.fn.position;

$.fn.position = function(options) {
if (!options || !options.of) {
return _position.apply(this, arguments);
}

var target = $(options.of),
collision = (options.collision || 'flip').split(' '),
offset = options.offset ? options.offset.split(' ') : [0, 0],
targetWidth,
targetHeight,
basePosition;

if (options.of == document) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: 0, left: 0 };
} else if (options.of == window) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
} else if (options.of.preventDefault) {
targetWidth = targetHeight = 0;
basePosition = { top: options.of.pageY, left: options.of.pageX };
} else {
targetWidth = target.outerWidth();
targetHeight = target.outerHeight();
basePosition = target.offset();
}

// force my and at to have valid horizontal and veritcal positions
// if a value is missing or invalid, it will be converted to center
$.each(['my', 'at'], function() {
var pos = (options[this] || '').split(' ');
pos = pos.length == 1
? horizontalPositions.test(pos[0])
? pos.concat([verticalDefault])
: verticalPositions.test(pos[0])
? [horizontalDefault].concat(pos)
: [horizontalDefault, verticalDefault]
: pos;
pos[0] = horizontalPositions.test(pos[0]) ? pos[0] : horizontalDefault;
pos[1] = verticalPositions.test(pos[1]) ? pos[1] : verticalDefault;
options[this] = pos;
});

// normalize collision option
if (collision.length == 1) {
collision[1] = collision[0];
}

// normalize offset option
offset[0] = parseInt(offset[0], 10) || 0;
if (offset.length == 1) {
offset[1] = offset[0];
}
offset[1] = parseInt(offset[1], 10) || 0;

switch (options.at[0]) {
case 'right':
basePosition.left += targetWidth;
break;
case horizontalDefault:
basePosition.left += targetWidth / 2;
break;
}

switch (options.at[1]) {
case 'bottom':
basePosition.top += targetHeight;
break;
case verticalDefault:
basePosition.top += targetHeight / 2;
break;
}

basePosition.left += offset[0];
basePosition.top += offset[1];

return this.each(function() {
var elem = $(this),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
position = $.extend({}, basePosition),
over,
myOffset,
atOffset;

switch (options.my[0]) {
case 'right':
position.left -= elemWidth;
break;
case horizontalDefault:
position.left -= elemWidth / 2;
break;
}

switch (options.my[1]) {
case 'bottom':
position.top -= elemHeight;
break;
case verticalDefault:
position.top -= elemHeight / 2;
break;
}

$.each(['left', 'top'], function(i, dir) {
($.ui.position[collision[i]] &&
$.ui.position[collision[i]][dir](position, {
targetWidth: targetWidth,
targetHeight: targetHeight,
elemWidth: elemWidth,
elemHeight: elemHeight,
offset: offset,
my: options.my,
at: options.at
}));
});

(options.stackfix !== false && $.fn.stackfix && elem.stackfix());
// the by function is passed the offset values, not the position values
// we'll need the logic from the .offset() setter to be accessible for
// us to calculate the position values to make the by option more useful
($.isFunction(options.by) ? options.by.call(this, position) : elem.offset(position));
});
};

$.ui.position = {
fit: {
left: function(position, data) {
var over = position.left + data.elemWidth - $(window).width() - $(window).scrollLeft();
position.left = over > 0 ? position.left - over : Math.max(0, position.left);
},
top: function(position, data) {
var over = position.top + data.elemHeight - $(window).height() - $(window).scrollTop();
position.top = over > 0 ? position.top - over : Math.max(0, position.top);
}
},

flip: {
left: function(position, data) {
if (data.at[0] == 'center')
return;
var over = position.left + data.elemWidth - $(window).width() - $(window).scrollLeft(),
myOffset = data.my[0] == 'left' ? -data.elemWidth : data.my[0] == 'right' ? data.elemWidth : 0,
offset = -2 * data.offset[0];
position.left += position.left < 0 ? myOffset + data.targetWidth + offset : over > 0 ? myOffset - data.targetWidth + offset : 0;
},
top: function(position, data) {
if (data.at[1] == 'center')
return;
var over = position.top + data.elemHeight - $(window).height() - $(window).scrollTop(),
myOffset = data.my[1] == 'top' ? -data.elemHeight : data.my[1] == 'bottom' ? data.elemHeight : 0,
atOffset = data.at[1] == 'top' ? data.targetHeight : -data.targetHeight,
offset = -2 * data.offset[1];
position.top += position.top < 0 ? myOffset + data.targetHeight + offset : over > 0 ? myOffset + atOffset + offset : 0;
}
}
};


// the following functionality is planned for jQuery 1.4
// based on http://plugins.jquery.com/files/offset.js.txt
$.fn.extend({
_offset: $.fn.offset,
offset: function(newOffset) {
return !newOffset ? this._offset() : this.each(function() {
var elem = $(this),
// we need to convert static positioning to relative positioning
isRelative = /relative|static/.test(elem.css('position')),
hide = elem.css('display') == 'none';

(isRelative && elem.css('position', 'relative'));
(hide && elem.show());

var offset = elem.offset(),
delta = {
left : parseInt(elem.css('left'), 10),
top: parseInt(elem.css('top'), 10)
};

// in case of 'auto'
delta.left = !isNaN(delta.left)
? delta.left
: isRelative
? 0
: this.offsetLeft;
delta.top = !isNaN(delta.top)
? delta.top
: isRelative
? 0
: this.offsetTop;

// allow setting only left or only top
if (newOffset.left || newOffset.left === 0) {
elem.css('left', newOffset.left - offset.left + delta.left);
}
if (newOffset.top || newOffset.top === 0) {
elem.css('top', newOffset.top - offset.top + delta.top);
}

(hide && elem.hide());
});
}
});

})(jQuery);

0 comments on commit 49f36c9

Please sign in to comment.