Merge branch 'develop' of projects.ceondo.com:indefero into feature.scilab
Conflicts: NEWS.mdtext
This commit is contained in:
commit
f8a830802e
1
AUTHORS
1
AUTHORS
@ -35,6 +35,7 @@ Much appreciated contributors (in alphabetical order):
|
|||||||
Pedro Kiefer <pedro@kiefer.com.br> - Brazilian Portuguese translation
|
Pedro Kiefer <pedro@kiefer.com.br> - Brazilian Portuguese translation
|
||||||
Raphaël Emourgeon <raphael>
|
Raphaël Emourgeon <raphael>
|
||||||
Samuel Suther <info@suther.de> - German translation
|
Samuel Suther <info@suther.de> - German translation
|
||||||
|
Simon Holywell <treffynnon@php.net>
|
||||||
Sindre R. Myren <sindrero@stud.ntnu.no>
|
Sindre R. Myren <sindrero@stud.ntnu.no>
|
||||||
Stewart Platt <stew@futurete.ch>
|
Stewart Platt <stew@futurete.ch>
|
||||||
Stéphane Baron <sbaron>
|
Stéphane Baron <sbaron>
|
||||||
|
@ -53,6 +53,8 @@ or newer to properly run this version of Indefero!
|
|||||||
|
|
||||||
## Bugfixes
|
## Bugfixes
|
||||||
|
|
||||||
|
- Ensure that IDF does not break UTF-8 encoded strings when
|
||||||
|
shortening them for view rendering (issue 785)
|
||||||
- Indefero no longer confuses a non-owner of an issue with a notification that
|
- Indefero no longer confuses a non-owner of an issue with a notification that
|
||||||
a particular ticket has been opened and assigned to him (fixes issue 562)
|
a particular ticket has been opened and assigned to him (fixes issue 562)
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ class IDF_Scm_Monotone_Stdio implements IDF_Scm_Monotone_IStdio
|
|||||||
$remote_db_access = Pluf::f('mtn_db_access', 'remote') == 'remote';
|
$remote_db_access = Pluf::f('mtn_db_access', 'remote') == 'remote';
|
||||||
|
|
||||||
$cmd = Pluf::f('idf_exec_cmd_prefix', '') .
|
$cmd = Pluf::f('idf_exec_cmd_prefix', '') .
|
||||||
Pluf::f('mtn_path', 'mtn') . ' ';
|
escapeshellarg(Pluf::f('mtn_path', 'mtn')) . ' ';
|
||||||
|
|
||||||
$opts = Pluf::f('mtn_opts', array());
|
$opts = Pluf::f('mtn_opts', array());
|
||||||
foreach ($opts as $opt) {
|
foreach ($opts as $opt) {
|
||||||
|
@ -31,6 +31,6 @@ class IDF_Template_HotKey extends Pluf_Template_Tag
|
|||||||
function start($key, $view, $params=array(), $get_params=array())
|
function start($key, $view, $params=array(), $get_params=array())
|
||||||
{
|
{
|
||||||
$url = addslashes(Pluf_HTTP_URL_urlForView($view, $params, $get_params));
|
$url = addslashes(Pluf_HTTP_URL_urlForView($view, $params, $get_params));
|
||||||
echo "jQuery.hotkeys.add('$key',{disableInInput: true},function (){window.location.href='$url';});";
|
echo "$(document).bind('keydown','$key',function (){window.location.href='$url';});";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -512,12 +512,12 @@ function IDF_Views_Source_PrettySizeSimple($size)
|
|||||||
function IDF_Views_Source_ShortenString($string, $length)
|
function IDF_Views_Source_ShortenString($string, $length)
|
||||||
{
|
{
|
||||||
$ellipse = "...";
|
$ellipse = "...";
|
||||||
$length = max(strlen($ellipse) + 2, $length);
|
$length = max(mb_strlen($ellipse) + 2, $length);
|
||||||
$preflen = ceil($length / 10);
|
$preflen = ceil($length / 10);
|
||||||
|
|
||||||
if (mb_strlen($string) < $length)
|
if (mb_strlen($string) < $length)
|
||||||
return $string;
|
return $string;
|
||||||
|
|
||||||
return substr($string, 0, $preflen).$ellipse.
|
return mb_substr($string, 0, $preflen).$ellipse.
|
||||||
substr($string, -($length - $preflen - mb_strlen($ellipse)));
|
mb_substr($string, -($length - $preflen - mb_strlen($ellipse)));
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<![endif]-->
|
<![endif]-->
|
||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
||||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.1.min.js'}"></script>
|
||||||
{appversion}
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<![endif]-->
|
<![endif]-->
|
||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
||||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.1.min.js'}"></script>
|
||||||
{appversion}
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
<![endif]-->
|
<![endif]-->
|
||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
||||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.7.1.min.js'}"></script>
|
||||||
{appversion}
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
{block docclass}yui-t2{assign $inSummaryIssues=true}{/block}
|
{block docclass}yui-t2{assign $inSummaryIssues=true}{/block}
|
||||||
|
|
||||||
|
{block context}
|
||||||
|
<p><a>
|
||||||
|
<p><a href="{url 'IDF_Views_Issue::index', array($project.shortname)}">{blocktrans}View all open issues.{/blocktrans}</a></p>
|
||||||
|
{if !$user.isAnonymous()}
|
||||||
|
<p><a href="{url 'IDF_Views_Issue::create', array($project.shortname)}">{blocktrans}Create an issue.{/blocktrans}</a></p>
|
||||||
|
{/if}
|
||||||
|
{/block}
|
||||||
|
|
||||||
{block body}
|
{block body}
|
||||||
{if $trackerEmpty}
|
{if $trackerEmpty}
|
||||||
{aurl 'create_url', 'IDF_Views_Issue::create', array($project.shortname)}
|
{aurl 'create_url', 'IDF_Views_Issue::create', array($project.shortname)}
|
||||||
|
32
www/media/idf/js/jquery-1.2.6.min.js
vendored
32
www/media/idf/js/jquery-1.2.6.min.js
vendored
File diff suppressed because one or more lines are too long
4
www/media/idf/js/jquery-1.7.1.min.js
vendored
Normal file
4
www/media/idf/js/jquery-1.7.1.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@ -1,126 +1,100 @@
|
|||||||
/******************************************************************************************************************************
|
/*
|
||||||
|
* jQuery Hotkeys Plugin
|
||||||
|
* Copyright 2010, John Resig
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
*
|
||||||
|
* Based upon the plugin by Tzury Bar Yochay:
|
||||||
|
* http://github.com/tzuryby/hotkeys
|
||||||
|
*
|
||||||
|
* Original idea by:
|
||||||
|
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
|
||||||
|
*/
|
||||||
|
|
||||||
* @ Original idea by by Binny V A, Original version: 2.00.A
|
(function(jQuery){
|
||||||
* @ http://www.openjs.com/scripts/events/keyboard_shortcuts/
|
|
||||||
* @ Original License : BSD
|
jQuery.hotkeys = {
|
||||||
|
version: "0.8",
|
||||||
* @ jQuery Plugin by Tzury Bar Yochay
|
|
||||||
mail: tzury.by@gmail.com
|
|
||||||
blog: evalinux.wordpress.com
|
|
||||||
face: facebook.com/profile.php?id=513676303
|
|
||||||
|
|
||||||
(c) Copyrights 2007
|
|
||||||
|
|
||||||
* @ jQuery Plugin version Beta (0.0.2)
|
|
||||||
* @ License: jQuery-License.
|
|
||||||
|
|
||||||
TODO:
|
|
||||||
add queue support (as in gmail) e.g. 'x' then 'y', etc.
|
|
||||||
add mouse + mouse wheel events.
|
|
||||||
|
|
||||||
USAGE:
|
specialKeys: {
|
||||||
$.hotkeys.add('Ctrl+c', function(){ alert('copy anyone?');});
|
8: "backspace", 9: "tab", 13: "return", 16: "shift", 17: "ctrl", 18: "alt", 19: "pause",
|
||||||
$.hotkeys.add('Ctrl+c', {target:'div#editor', type:'keyup', propagate: true},function(){ alert('copy anyone?');});>
|
20: "capslock", 27: "esc", 32: "space", 33: "pageup", 34: "pagedown", 35: "end", 36: "home",
|
||||||
$.hotkeys.remove('Ctrl+c');
|
37: "left", 38: "up", 39: "right", 40: "down", 45: "insert", 46: "del",
|
||||||
$.hotkeys.remove('Ctrl+c', {target:'div#editor', type:'keypress'});
|
96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7",
|
||||||
|
104: "8", 105: "9", 106: "*", 107: "+", 109: "-", 110: ".", 111 : "/",
|
||||||
******************************************************************************************************************************/
|
112: "f1", 113: "f2", 114: "f3", 115: "f4", 116: "f5", 117: "f6", 118: "f7", 119: "f8",
|
||||||
(function (jQuery){
|
120: "f9", 121: "f10", 122: "f11", 123: "f12", 144: "numlock", 145: "scroll", 188: ",", 190: ".",
|
||||||
this.version = '(beta)(0.0.3)';
|
191: "/", 224: "meta"
|
||||||
this.all = {};
|
},
|
||||||
this.special_keys = {
|
|
||||||
27: 'esc', 9: 'tab', 32:'space', 13: 'return', 8:'backspace', 145: 'scroll', 20: 'capslock',
|
shiftNums: {
|
||||||
144: 'numlock', 19:'pause', 45:'insert', 36:'home', 46:'del',35:'end', 33: 'pageup',
|
"`": "~", "1": "!", "2": "@", "3": "#", "4": "$", "5": "%", "6": "^", "7": "&",
|
||||||
34:'pagedown', 37:'left', 38:'up', 39:'right',40:'down', 112:'f1',113:'f2', 114:'f3',
|
"8": "*", "9": "(", "0": ")", "-": "_", "=": "+", ";": ": ", "'": "\"", ",": "<",
|
||||||
115:'f4', 116:'f5', 117:'f6', 118:'f7', 119:'f8', 120:'f9', 121:'f10', 122:'f11', 123:'f12'};
|
".": ">", "/": "?", "\\": "|"
|
||||||
|
}
|
||||||
this.shift_nums = { "`":"~", "1":"!", "2":"@", "3":"#", "4":"$", "5":"%", "6":"^", "7":"&",
|
|
||||||
"8":"*", "9":"(", "0":")", "-":"_", "=":"+", ";":":", "'":"\"", ",":"<",
|
|
||||||
".":">", "/":"?", "\\":"|" };
|
|
||||||
|
|
||||||
this.add = function(combi, options, callback) {
|
|
||||||
if (jQuery.isFunction(options)){
|
|
||||||
callback = options;
|
|
||||||
options = {};
|
|
||||||
}
|
|
||||||
var opt = {},
|
|
||||||
defaults = {type: 'keydown', propagate: false, disableInInput: false, target: jQuery('html')[0]},
|
|
||||||
that = this;
|
|
||||||
opt = jQuery.extend( opt , defaults, options || {} );
|
|
||||||
combi = combi.toLowerCase();
|
|
||||||
|
|
||||||
// inspect if keystroke matches
|
|
||||||
var inspector = function(event) {
|
|
||||||
event = jQuery.event.fix(event); // jQuery event normalization.
|
|
||||||
var element = event.target;
|
|
||||||
// @ TextNode -> nodeType == 3
|
|
||||||
element = (element.nodeType==3) ? element.parentNode : element;
|
|
||||||
|
|
||||||
if(opt['disableInInput']) { // Disable shortcut keys in Input, Textarea fields
|
|
||||||
var target = jQuery(element);
|
|
||||||
if( target.is("input") || target.is("textarea")){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var code = event.which,
|
|
||||||
type = event.type,
|
|
||||||
character = String.fromCharCode(code).toLowerCase(),
|
|
||||||
special = that.special_keys[code],
|
|
||||||
shift = event.shiftKey,
|
|
||||||
ctrl = event.ctrlKey,
|
|
||||||
alt= event.altKey,
|
|
||||||
propagate = true, // default behaivour
|
|
||||||
mapPoint = null;
|
|
||||||
|
|
||||||
// in opera + safari, the event.target is unpredictable.
|
|
||||||
// for example: 'keydown' might be associated with HtmlBodyElement
|
|
||||||
// or the element where you last clicked with your mouse.
|
|
||||||
if (jQuery.browser.opera || jQuery.browser.safari){
|
|
||||||
while (!that.all[element] && element.parentNode){
|
|
||||||
element = element.parentNode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var cbMap = that.all[element].events[type].callbackMap;
|
|
||||||
if(!shift && !ctrl && !alt) { // No Modifiers
|
|
||||||
mapPoint = cbMap[special] || cbMap[character]
|
|
||||||
}
|
|
||||||
// deals with combinaitons (alt|ctrl|shift+anything)
|
|
||||||
else{
|
|
||||||
var modif = '';
|
|
||||||
if(alt) modif +='alt+';
|
|
||||||
if(ctrl) modif+= 'ctrl+';
|
|
||||||
if(shift) modif += 'shift+';
|
|
||||||
// modifiers + special keys or modifiers + characters or modifiers + shift characters
|
|
||||||
mapPoint = cbMap[modif+special] || cbMap[modif+character] || cbMap[modif+that.shift_nums[character]]
|
|
||||||
}
|
|
||||||
if (mapPoint){
|
|
||||||
mapPoint.cb(event);
|
|
||||||
if(!mapPoint.propagate) {
|
|
||||||
event.stopPropagation();
|
|
||||||
event.preventDefault();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
// first hook for this element
|
|
||||||
if (!this.all[opt.target]){
|
|
||||||
this.all[opt.target] = {events:{}};
|
|
||||||
}
|
|
||||||
if (!this.all[opt.target].events[opt.type]){
|
|
||||||
this.all[opt.target].events[opt.type] = {callbackMap: {}}
|
|
||||||
jQuery.event.add(opt.target, opt.type, inspector);
|
|
||||||
}
|
|
||||||
this.all[opt.target].events[opt.type].callbackMap[combi] = {cb: callback, propagate:opt.propagate};
|
|
||||||
return jQuery;
|
|
||||||
};
|
|
||||||
this.remove = function(exp, opt) {
|
|
||||||
opt = opt || {};
|
|
||||||
target = opt.target || jQuery('html')[0];
|
|
||||||
type = opt.type || 'keydown';
|
|
||||||
exp = exp.toLowerCase();
|
|
||||||
delete this.all[target].events[type].callbackMap[exp]
|
|
||||||
return jQuery;
|
|
||||||
};
|
};
|
||||||
jQuery.hotkeys = this;
|
|
||||||
return jQuery;
|
function keyHandler( handleObj ) {
|
||||||
})(jQuery);
|
// Only care when a possible input has been specified
|
||||||
|
if ( typeof handleObj.data !== "string" ) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var origHandler = handleObj.handler,
|
||||||
|
keys = handleObj.data.toLowerCase().split(" ");
|
||||||
|
|
||||||
|
handleObj.handler = function( event ) {
|
||||||
|
// Don't fire in text-accepting inputs that we didn't directly bind to
|
||||||
|
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
|
||||||
|
event.target.type === "text" || $(event.target).prop('contenteditable') == 'true' )) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Keypress represents characters, not special keys
|
||||||
|
var special = event.type !== "keypress" && jQuery.hotkeys.specialKeys[ event.which ],
|
||||||
|
character = String.fromCharCode( event.which ).toLowerCase(),
|
||||||
|
key, modif = "", possible = {};
|
||||||
|
|
||||||
|
// check combinations (alt|ctrl|shift+anything)
|
||||||
|
if ( event.altKey && special !== "alt" ) {
|
||||||
|
modif += "alt+";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( event.ctrlKey && special !== "ctrl" ) {
|
||||||
|
modif += "ctrl+";
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Need to make sure this works consistently across platforms
|
||||||
|
if ( event.metaKey && !event.ctrlKey && special !== "meta" ) {
|
||||||
|
modif += "meta+";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( event.shiftKey && special !== "shift" ) {
|
||||||
|
modif += "shift+";
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( special ) {
|
||||||
|
possible[ modif + special ] = true;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
possible[ modif + character ] = true;
|
||||||
|
possible[ modif + jQuery.hotkeys.shiftNums[ character ] ] = true;
|
||||||
|
|
||||||
|
// "$" can be triggered as "Shift+4" or "Shift+$" or just "$"
|
||||||
|
if ( modif === "shift+" ) {
|
||||||
|
possible[ jQuery.hotkeys.shiftNums[ character ] ] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( var i = 0, l = keys.length; i < l; i++ ) {
|
||||||
|
if ( possible[ keys[i] ] ) {
|
||||||
|
return origHandler.apply( this, arguments );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
jQuery.each([ "keydown", "keyup", "keypress" ], function() {
|
||||||
|
jQuery.event.special[ this ] = { add: keyHandler };
|
||||||
|
});
|
||||||
|
|
||||||
|
})( jQuery );
|
||||||
|
Loading…
Reference in New Issue
Block a user