11 Commits
1.04 ... tests

Author SHA1 Message Date
d4b4429232 #9 Corregido el problema de detectar http y https en el enlace de la url de llamada. 2014-03-17 23:39:28 +01:00
rmontanana
5c403c5313 Caducidad de la cookie a 24h 2014-03-17 14:17:24 +01:00
rmontanana
8d0fffb04b El menú ahora funciona colapsado en resoluciones pequeñas. Corrección en el tamaño de la barra de búsqueda del mantenimiento en resoluciones pequeñas 2014-03-17 13:47:50 +01:00
rmontanana
d78333ae6a ref #9 Crear etiquetas de un artículo. Cambiar el nombre del archivo por omisión del informe de etiquetas. Ajuste para cuadrar con etiquetas del centro. 2014-03-15 03:36:28 +01:00
e1d50a74dc resolve#9 Creadas las etiquetas de artículos con código qr y paginación.
Sacada la versión y el autor del fichero de configuración.
2014-03-14 01:14:06 +01:00
rmontanana
c33a6edaa1 Arreglado que salía mantenimiento de Artículos cuando se solicitaba Matenimiento de Elementos. 2014-03-12 09:13:53 +01:00
rmontanana
78bd313fd3 Terminado el mantenimiento con:
-Control de la url de vuelta
-funcionamiento correcto de la cadena de búsqueda con la ordenación, edición, etc.
-funcionamiento correcto de la paginación y el orden con la edición, borrado, etc.
-mensaje de inserción de registros con nuevo formato y redirección con tiempo.
2014-03-12 09:09:58 +01:00
bd2f0ed4b8 En mantenimiento puesta la gestión de URL para que vuelva siempre a donde estaba tanto desde altas, modificaciones o bajas
Reformateado de ficheros
2014-03-11 23:58:20 +01:00
rmontanana
5444378aa4 Pequeños cambios en el mantenimiento para lo de la cadena de búsqueda 2014-03-10 16:49:26 +01:00
a266e85d39 Añadido que mantenga la cadena de búsqueda en su cuadro una vez pulsada la opción de buscar. Quedan cosas por hacer 2014-03-10 00:27:08 +01:00
8647d08d51 Primera aproximación para realizar los tests con phpunit
Configuración cambiada totalmente para optimizar el código y prepararlo para los tests.
Quitada la clave APLICACION del fichero de configuración y de las clases que lo utilizaban (Aportacontenido, InformePDF y PDF_mysql_table)
Creados los esqueletos de test para: Configuración, Menu y Sql
Casi terminado el conjunto de pruebas de Configuración. Pendiente en @todo
2014-03-10 00:17:05 +01:00
42 changed files with 18060 additions and 11333 deletions

View File

@@ -237,7 +237,7 @@ class AportaContenido {
if (file_exists($archivo)) {
unlink($archivo);
}
$comando = escapeshellcmd(MYSQLDUMP . ' -h ' . SERVIDOR . ' -P ' . PUERTO . ' -u ' . USUARIO . ' --password=' . CLAVE . ' --result-file=' . $archivo_sql . ' ' . BASEDATOS);
$comando = escapeshellcmd(MYSQLDUMP . ' -u ' . USUARIO . ' --password=' . CLAVE . ' --result-file=' . $archivo_sql . ' ' . BASEDATOS);
$comando2 = escapeshellcmd(GZIP . ' -9f ' . $archivo_sql);
exec($comando);
exec($comando2);

View File

@@ -25,7 +25,7 @@ class Configuracion {
private $confAnterior = "inc/configuracion.ant";
private $datosConf;
//Campos del fichero de configuración que se van a editar.
private $lista = array('SERVIDOR', 'PUERTO', 'BASEDATOS', 'BASEDATOSTEST', 'USUARIO', 'CLAVE', 'CENTRO', 'NUMFILAS', 'ESTILO', 'PLANTILLA', 'COLORLAT', 'COLORFON', 'MYSQLDUMP', 'GZIP');
private $lista = array('SERVIDOR', 'BASEDATOS', 'BASEDATOSTEST', 'USUARIO', 'CLAVE', 'CENTRO', 'NUMFILAS', 'ESTILO', 'PLANTILLA', 'COLORLAT', 'COLORFON', 'MYSQLDUMP', 'GZIP');
private $campos;
public function __construct()
@@ -135,7 +135,6 @@ class Configuracion {
$salida.='</select></td></tr>';
$salida.='<th colspan=2 class="danger"><center><b>Base de datos</b></center></th>';
$salida.='<tr><td>Servidor</td><td><input type="text" name="SERVIDOR" value="' . $this->datosConf['SERVIDOR'] . '" size="30" /></td></tr>';
$salida.='<tr><td>Puerto</td><td><input type="text" name="PUERTO" value="' . $this->datosConf['PUERTO'] . '" size="30" /></td></tr>';
$salida.='<tr><td>Base de datos</td><td><input type="text" name="BASEDATOS" value="' . $this->datosConf['BASEDATOS'] . '" size="30" /></td></tr>';
$salida.='<tr><td>Base de datos Tests</td><td><input type="text" name="BASEDATOSTEST" value="' . $this->datosConf['BASEDATOSTEST'] . '" size="30" /></td></tr>';
$salida.='<tr><td>Usuario</td><td><input type="text" name="USUARIO" value="' . $this->datosConf['USUARIO'] . '" size="30" /></td></tr>';

View File

View File

@@ -104,7 +104,7 @@ class Inventario {
$_SESSION['Usuario'] = $this->usuario;
$_SESSION['Perfil'] = $this->perfil;
// y enviamos la cookie para reconocerlo la próxima vez
setcookie('InventarioId', $resultado, time() + 3600 * 24 * 365);
setcookie('InventarioId', $resultado, time() + 3600 * 24);
// Lo enviamos a la página de bienvenida
header('Location: index.php?bienvenido');
exit;

File diff suppressed because one or more lines are too long

View File

@@ -226,4 +226,5 @@
<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
</font>
</defs></svg>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 64 KiB

View File

@@ -4,7 +4,9 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript requires jQuery') }
if (typeof jQuery === 'undefined') {
throw new Error('Bootstrap\'s JavaScript requires jQuery')
}
/* ========================================================================
* Bootstrap: transition.js v3.1.1
@@ -43,8 +45,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function(duration) {
var called = false, $el = this
$(this).one($.support.transition.end, function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
$(this).one($.support.transition.end, function() {
called = true
})
var callback = function() {
if (!called)
$($el).trigger($.support.transition.end)
}
setTimeout(callback, duration)
return this
}
@@ -86,7 +93,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $parent = $(selector)
if (e) e.preventDefault()
if (e)
e.preventDefault()
if (!$parent.length) {
$parent = $this.hasClass('alert') ? $this : $this.parent()
@@ -94,7 +102,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$parent.trigger(e = $.Event('close.bs.alert'))
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
$parent.removeClass('in')
@@ -120,8 +129,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $this = $(this)
var data = $this.data('bs.alert')
if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
if (!data)
$this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string')
data[option].call($this)
})
}
@@ -177,7 +188,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
state = state + 'Text'
if (!data.resetText) $el.data('resetText', $el[val]())
if (!data.resetText)
$el.data('resetText', $el[val]())
$el[val](data[state] || this.options[state])
@@ -200,13 +212,17 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if ($parent.length) {
var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
else $parent.find('.active').removeClass('active')
if ($input.prop('checked') && this.$element.hasClass('active'))
changed = false
else
$parent.find('.active').removeClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
if (changed)
$input.prop('checked', !this.$element.hasClass('active')).trigger('change')
}
if (changed) this.$element.toggleClass('active')
if (changed)
this.$element.toggleClass('active')
}
@@ -221,10 +237,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.button')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.button', (data = new Button(this, options)))
if (!data)
$this.data('bs.button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
if (option == 'toggle')
data.toggle()
else if (option)
data.setState(option)
})
}
@@ -245,7 +264,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(document).on('click.bs.button.data-api', '[data-toggle^=button]', function(e) {
var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
if (!$btn.hasClass('btn'))
$btn = $btn.closest('.btn')
$btn.button('toggle')
e.preventDefault()
})
@@ -311,10 +331,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var that = this
var activeIndex = this.getActiveIndex()
if (pos > (this.$items.length - 1) || pos < 0) return
if (pos > (this.$items.length - 1) || pos < 0)
return
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
if (activeIndex == pos) return this.pause().cycle()
if (this.sliding)
return this.$element.one('slid.bs.carousel', function() {
that.to(pos)
})
if (activeIndex == pos)
return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
}
@@ -333,12 +358,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Carousel.prototype.next = function() {
if (this.sliding) return
if (this.sliding)
return
return this.slide('next')
}
Carousel.prototype.prev = function() {
if (this.sliding) return
if (this.sliding)
return
return this.slide('prev')
}
@@ -351,15 +378,18 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var that = this
if (!$next.length) {
if (!this.options.wrap) return
if (!this.options.wrap)
return
$next = this.$element.find('.item')[fallback]()
}
if ($next.hasClass('active')) return this.sliding = false
if ($next.hasClass('active'))
return this.sliding = false
var e = $.Event('slide.bs.carousel', {relatedTarget: $next[0], direction: direction})
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
this.sliding = true
@@ -383,7 +413,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
setTimeout(function() {
that.$element.trigger('slid.bs.carousel')
}, 0)
})
.emulateTransitionEnd($active.css('transition-duration').slice(0, -1) * 1000)
} else {
@@ -411,10 +443,14 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
var action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.pause().cycle()
if (!data)
$this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number')
data.to(option)
else if (action)
data[action]()
else if (options.interval)
data.pause().cycle()
})
}
@@ -438,7 +474,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
if (slideIndex)
options.interval = false
$target.carousel(options)
@@ -478,8 +515,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.transitioning = null
if (this.options.parent) this.$parent = $(this.options.parent)
if (this.options.toggle) this.toggle()
if (this.options.parent)
this.$parent = $(this.options.parent)
if (this.options.toggle)
this.toggle()
}
Collapse.DEFAULTS = {
@@ -492,17 +531,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Collapse.prototype.show = function() {
if (this.transitioning || this.$element.hasClass('in')) return
if (this.transitioning || this.$element.hasClass('in'))
return
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (startEvent.isDefaultPrevented())
return
var actives = this.$parent && this.$parent.find('> .panel > .in')
if (actives && actives.length) {
var hasData = actives.data('bs.collapse')
if (hasData && hasData.transitioning) return
if (hasData && hasData.transitioning)
return
actives.collapse('hide')
hasData || actives.data('bs.collapse', null)
}
@@ -525,7 +567,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.$element.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
if (!$.support.transition)
return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
@@ -536,11 +579,13 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Collapse.prototype.hide = function() {
if (this.transitioning || !this.$element.hasClass('in')) return
if (this.transitioning || !this.$element.hasClass('in'))
return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (startEvent.isDefaultPrevented())
return
var dimension = this.dimension()
@@ -563,7 +608,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
.addClass('collapse')
}
if (!$.support.transition) return complete.call(this)
if (!$.support.transition)
return complete.call(this)
this.$element
[dimension](0)
@@ -587,9 +633,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && option == 'show') option = !option
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
if (!data && options.toggle && option == 'show')
option = !option
if (!data)
$this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string')
data[option]()
})
}
@@ -620,7 +669,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $parent = parent && $(parent)
if (!data || !data.transitioning) {
if ($parent) $parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
if ($parent)
$parent.find('[data-toggle=collapse][data-parent="' + parent + '"]').not($this).addClass('collapsed')
$this[$target.hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
}
@@ -653,7 +703,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
Dropdown.prototype.toggle = function(e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
if ($this.is('.disabled, :disabled'))
return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
@@ -669,7 +720,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var relatedTarget = {relatedTarget: this}
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
$parent
.toggleClass('open')
@@ -682,33 +734,40 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Dropdown.prototype.keydown = function(e) {
if (!/(38|40|27)/.test(e.keyCode)) return
if (!/(38|40|27)/.test(e.keyCode))
return
var $this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
if ($this.is('.disabled, :disabled'))
return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if (!isActive || (isActive && e.keyCode == 27)) {
if (e.which == 27) $parent.find(toggle).focus()
if (e.which == 27)
$parent.find(toggle).focus()
return $this.click()
}
var desc = ' li:not(.divider):visible a'
var $items = $parent.find('[role=menu]' + desc + ', [role=listbox]' + desc)
if (!$items.length) return
if (!$items.length)
return
var index = $items.index($items.filter(':focus'))
if (e.keyCode == 38 && index > 0) index-- // up
if (e.keyCode == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
if (e.keyCode == 38 && index > 0)
index-- // up
if (e.keyCode == 40 && index < $items.length - 1)
index++ // down
if (!~index)
index = 0
$items.eq(index).focus()
}
@@ -718,9 +777,11 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(toggle).each(function() {
var $parent = getParent($(this))
var relatedTarget = {relatedTarget: this}
if (!$parent.hasClass('open')) return
if (!$parent.hasClass('open'))
return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
@@ -749,8 +810,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
if (!data)
$this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string')
data[option].call($this)
})
}
@@ -771,7 +834,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', '.dropdown form', function(e) {
e.stopPropagation()
})
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle + ', [role=menu], [role=listbox]', Dropdown.prototype.keydown)
@@ -823,7 +888,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
if (this.isShown || e.isDefaultPrevented())
return
this.isShown = true
@@ -865,13 +931,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Modal.prototype.hide = function(e) {
if (e) e.preventDefault()
if (e)
e.preventDefault()
e = $.Event('hide.bs.modal')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
if (!this.isShown || e.isDefaultPrevented())
return
this.isShown = false
@@ -935,17 +1003,20 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
.appendTo(document.body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function(e) {
if (e.target !== e.currentTarget) return
if (e.target !== e.currentTarget)
return
this.options.backdrop == 'static'
? this.$element[0].focus.call(this.$element[0])
: this.hide.call(this)
}, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
if (doAnimate)
this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
if (!callback) return
if (!callback)
return
doAnimate ?
this.$backdrop
@@ -979,9 +1050,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.modal')
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](_relatedTarget)
else if (options.show) data.show(_relatedTarget)
if (!data)
$this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string')
data[option](_relatedTarget)
else if (options.show)
data.show(_relatedTarget)
})
}
@@ -1006,7 +1080,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
var option = $target.data('bs.modal') ? 'toggle' : $.extend({remote: !/#/.test(href) && href}, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
if ($this.is('a'))
e.preventDefault()
$target
.modal(option, this)
@@ -1016,8 +1091,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
})
$(document)
.on('show.bs.modal', '.modal', function () { $(document.body).addClass('modal-open') })
.on('hidden.bs.modal', '.modal', function () { $(document.body).removeClass('modal-open') })
.on('show.bs.modal', '.modal', function() {
$(document.body).addClass('modal-open')
})
.on('hidden.bs.modal', '.modal', function() {
$(document.body).removeClass('modal-open')
})
}(jQuery);
@@ -1109,7 +1188,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var defaults = this.getDefaults()
this._options && $.each(this._options, function(key, value) {
if (defaults[key] != value) options[key] = value
if (defaults[key] != value)
options[key] = value
})
return options
@@ -1123,10 +1203,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
self.hoverState = 'in'
if (!self.options.delay || !self.options.delay.show) return self.show()
if (!self.options.delay || !self.options.delay.show)
return self.show()
self.timeout = setTimeout(function() {
if (self.hoverState == 'in') self.show()
if (self.hoverState == 'in')
self.show()
}, self.options.delay.show)
}
@@ -1138,10 +1220,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
self.hoverState = 'out'
if (!self.options.delay || !self.options.delay.hide) return self.hide()
if (!self.options.delay || !self.options.delay.hide)
return self.hide()
self.timeout = setTimeout(function() {
if (self.hoverState == 'out') self.hide()
if (self.hoverState == 'out')
self.hide()
}, self.options.delay.hide)
}
@@ -1151,14 +1235,16 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
var that = this;
var $tip = this.tip()
this.setContent()
if (this.options.animation) $tip.addClass('fade')
if (this.options.animation)
$tip.addClass('fade')
var placement = typeof this.options.placement == 'function' ?
this.options.placement.call(this, $tip[0], this.$element[0]) :
@@ -1166,7 +1252,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var autoToken = /\s?auto?\s?/i
var autoPlace = autoToken.test(placement)
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
if (autoPlace)
placement = placement.replace(autoToken, '') || 'top'
$tip
.detach()
@@ -1227,8 +1314,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var marginLeft = parseInt($tip.css('margin-left'), 10)
// we must check for NaN for ie 8/9
if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0
if (isNaN(marginTop))
marginTop = 0
if (isNaN(marginLeft))
marginLeft = 0
offset.top = offset.top + marginTop
offset.left = offset.left + marginLeft
@@ -1273,7 +1362,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.replaceArrow(actualHeight - height, actualHeight, 'top')
}
if (replace) $tip.offset(offset)
if (replace)
$tip.offset(offset)
}
Tooltip.prototype.replaceArrow = function(delta, dimension, position) {
@@ -1294,13 +1384,15 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var e = $.Event('hide.bs.' + this.type)
function complete() {
if (that.hoverState != 'in') $tip.detach()
if (that.hoverState != 'in')
$tip.detach()
that.$element.trigger('hidden.bs.' + that.type)
}
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
$tip.removeClass('in')
@@ -1402,9 +1494,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
if (!data && option == 'destroy') return
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
if (!data && option == 'destroy')
return
if (!data)
$this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string')
data[option]()
})
}
@@ -1440,7 +1535,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
this.init('popover', element, options)
}
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
if (!$.fn.tooltip)
throw new Error('Popover requires tooltip.js')
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
@@ -1475,7 +1571,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
if (!$tip.find('.popover-title').html())
$tip.find('.popover-title').hide()
}
Popover.prototype.hasContent = function() {
@@ -1497,7 +1594,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Popover.prototype.tip = function() {
if (!this.$tip) this.$tip = $(this.options.template)
if (!this.$tip)
this.$tip = $(this.options.template)
return this.$tip
}
@@ -1513,9 +1611,12 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
if (!data && option == 'destroy') return
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
if (!data && option == 'destroy')
return
if (!data)
$this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string')
data[option]()
})
}
@@ -1589,7 +1690,9 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
&& $href.is(':visible')
&& [[$href[offsetMethod]().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.sort(function(a, b) {
return a[0] - b[0]
})
.each(function() {
self.offsets.push(this[0])
self.targets.push(this[1])
@@ -1657,8 +1760,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.scrollspy')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string') data[option]()
if (!data)
$this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string')
data[option]()
})
}
@@ -1715,7 +1820,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
}
if ($this.parent('li').hasClass('active')) return
if ($this.parent('li').hasClass('active'))
return
var previous = $ul.find('.active:last a')[0]
var e = $.Event('show.bs.tab', {
@@ -1724,7 +1830,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
$this.trigger(e)
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
var $target = $(selector)
@@ -1785,8 +1892,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var $this = $(this)
var data = $this.data('bs.tab')
if (!data) $this.data('bs.tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
if (!data)
$this.data('bs.tab', (data = new Tab(this)))
if (typeof option == 'string')
data[option]()
})
}
@@ -1848,7 +1957,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Affix.prototype.getPinnedOffset = function() {
if (this.pinnedOffset) return this.pinnedOffset
if (this.pinnedOffset)
return this.pinnedOffset
this.$element.removeClass(Affix.RESET).addClass('affix')
var scrollTop = this.$window.scrollTop()
var position = this.$element.offset()
@@ -1860,7 +1970,8 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
}
Affix.prototype.checkPosition = function() {
if (!this.$element.is(':visible')) return
if (!this.$element.is(':visible'))
return
var scrollHeight = $(document).height()
var scrollTop = this.$window.scrollTop()
@@ -1869,25 +1980,32 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var offsetTop = offset.top
var offsetBottom = offset.bottom
if (this.affixed == 'top') position.top += scrollTop
if (this.affixed == 'top')
position.top += scrollTop
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
if (typeof offset != 'object')
offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function')
offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function')
offsetBottom = offset.bottom(this.$element)
var affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ? false :
offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ? 'bottom' :
offsetTop != null && (scrollTop <= offsetTop) ? 'top' : false
if (this.affixed === affix) return
if (this.unpin) this.$element.css('top', '')
if (this.affixed === affix)
return
if (this.unpin)
this.$element.css('top', '')
var affixType = 'affix' + (affix ? '-' + affix : '')
var e = $.Event(affixType + '.bs.affix')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
if (e.isDefaultPrevented())
return
this.affixed = affix
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
@@ -1914,8 +2032,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
var data = $this.data('bs.affix')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
if (typeof option == 'string') data[option]()
if (!data)
$this.data('bs.affix', (data = new Affix(this, options)))
if (typeof option == 'string')
data[option]()
})
}
@@ -1941,8 +2061,10 @@ if (typeof jQuery === 'undefined') { throw new Error('Bootstrap\'s JavaScript re
data.offset = data.offset || {}
if (data.offsetBottom) data.offset.bottom = data.offsetBottom
if (data.offsetTop) data.offset.top = data.offsetTop
if (data.offsetBottom)
data.offset.bottom = data.offsetBottom
if (data.offsetTop)
data.offset.top = data.offsetTop
$spy.affix(data)
})

File diff suppressed because one or more lines are too long

2309
css/jquery.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -22,7 +22,6 @@
*/
SimpleColorPicker.prototype = {
constructor: SimpleColorPicker,
init: function(type, select, options) {
var self = this;
@@ -103,7 +102,6 @@
}
});
},
/**
* Changes the selected color.
*
@@ -122,7 +120,6 @@
console.error("The given color '" + color + "' could not be found");
}
},
showPicker: function() {
var pos = this.$icon.offset();
this.$picker.css({
@@ -133,11 +130,9 @@
this.$picker.show(this.options.pickerDelay);
},
hidePicker: function() {
this.$picker.hide(this.options.pickerDelay);
},
/**
* Selects the given span inside $colorList.
*
@@ -161,7 +156,6 @@
// Change HTML select value
this.$select.val(color);
},
/**
* The user clicked on a color inside $colorList.
*/
@@ -172,7 +166,6 @@
this.$select.trigger('change');
}
},
/**
* Prevents the mousedown event from "eating" the click event.
*/
@@ -180,7 +173,6 @@
e.stopPropagation();
e.preventDefault();
},
destroy: function() {
if (this.options.picker === true) {
this.$icon.off('.' + this.type);
@@ -224,10 +216,8 @@
$.fn.simplecolorpicker.defaults = {
// No theme by default
theme: '',
// Show the picker or make it inline
picker: false,
// Animation delay in milliseconds
pickerDelay: 0
};

794
css/moment.min.js vendored

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Courier';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Courier-Bold';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Courier-BoldOblique';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Courier-Oblique';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Helvetica';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Helvetica-Bold';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Helvetica-BoldOblique';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Helvetica-Oblique';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
/* * *****************************************************************************
* Utility to generate font definition files *
* *
@@ -15,18 +16,15 @@ function ReadMap($enc)
if (empty($a))
die('<b>Error:</b> encoding not found: ' . $enc);
$cc2gn = array();
foreach($a as $l)
{
if($l[0]=='!')
{
foreach ($a as $l) {
if ($l[0] == '!') {
$e = preg_split('/[ \\t]+/', rtrim($l));
$cc = hexdec(substr($e[0], 1));
$gn = $e[2];
$cc2gn[$cc] = $gn;
}
}
for($i=0;$i<=255;$i++)
{
for ($i = 0; $i <= 255; $i++) {
if (!isset($cc2gn[$i]))
$cc2gn[$i] = '.notdef';
}
@@ -49,37 +47,30 @@ function ReadAFM($file, &$map)
'Tcedilla' => 'Tcommaaccent', 'tcedilla' => 'tcommaaccent', 'Dslash' => 'Dcroat', 'dslash' => 'dcroat', 'Dmacron' => 'Dcroat', 'dmacron' => 'dcroat',
'combininggraveaccent' => 'gravecomb', 'combininghookabove' => 'hookabovecomb', 'combiningtildeaccent' => 'tildecomb',
'combiningacuteaccent' => 'acutecomb', 'combiningdotbelow' => 'dotbelowcomb', 'dongsign' => 'dong');
foreach($a as $l)
{
foreach ($a as $l) {
$e = explode(' ', rtrim($l));
if (count($e) < 2)
continue;
$code = $e[0];
$param = $e[1];
if($code=='C')
{
if ($code == 'C') {
//Character metrics
$cc = (int) $e[1];
$w = $e[4];
$gn = $e[7];
if (substr($gn, -4) == '20AC')
$gn = 'Euro';
if(isset($fix[$gn]))
{
if (isset($fix[$gn])) {
//Fix incorrect glyph name
foreach($map as $c=>$n)
{
foreach ($map as $c => $n) {
if ($n == $fix[$gn])
$map[$c] = $gn;
}
}
if(empty($map))
{
if (empty($map)) {
//Symbolic font: use built-in encoding
$widths[$cc] = $w;
}
else
{
} else {
$widths[$gn] = $w;
if ($gn == 'X')
$fm['CapXHeight'] = $e[13];
@@ -112,17 +103,14 @@ function ReadAFM($file, &$map)
}
if (!isset($fm['FontName']))
die('FontName not found');
if(!empty($map))
{
if (!empty($map)) {
if (!isset($widths['.notdef']))
$widths['.notdef'] = 600;
if (!isset($widths['Delta']) && isset($widths['increment']))
$widths['Delta'] = $widths['increment'];
//Order widths according to map
for($i=0;$i<=255;$i++)
{
if(!isset($widths[$map[$i]]))
{
for ($i = 0; $i <= 255; $i++) {
if (!isset($widths[$map[$i]])) {
echo '<b>Warning:</b> character ' . $map[$i] . ' is missing<br>';
$widths[$i] = $widths['.notdef'];
}
@@ -190,8 +178,7 @@ function MakeWidthArray($fm)
//Make character width array
$s = "array(\n\t";
$cw = $fm['Widths'];
for($i=0;$i<=255;$i++)
{
for ($i = 0; $i <= 255; $i++) {
if (chr($i) == "'")
$s.="'\\''";
elseif (chr($i) == "\\")
@@ -216,10 +203,8 @@ function MakeFontEncoding($map)
$ref = ReadMap('cp1252');
$s = '';
$last = 0;
for($i=32;$i<=255;$i++)
{
if($map[$i]!=$ref[$i])
{
for ($i = 32; $i <= 255; $i++) {
if ($map[$i] != $ref[$i]) {
if ($i != $last + 1)
$s.=$i . ' ';
$last = $i;
@@ -262,17 +247,14 @@ function CheckTTF($file)
fseek($f, 6, SEEK_CUR);
//Seek OS/2 table
$found = false;
for($i=0;$i<$nb;$i++)
{
if(fread($f,4)=='OS/2')
{
for ($i = 0; $i < $nb; $i++) {
if (fread($f, 4) == 'OS/2') {
$found = true;
break;
}
fseek($f, 12, SEEK_CUR);
}
if(!$found)
{
if (!$found) {
fclose($f);
return;
}
@@ -297,14 +279,14 @@ function CheckTTF($file)
* patch: optional patch for encoding *
* type: font type if fontfile is empty *
* ***************************************************************************** */
function MakeFont($fontfile, $afmfile, $enc = 'cp1252', $patch = array(), $type = 'TrueType')
{
//Generate a font definition file
if (get_magic_quotes_runtime())
@set_magic_quotes_runtime(0);
ini_set('auto_detect_line_endings', '1');
if($enc)
{
if ($enc) {
$map = ReadMap($enc);
foreach ($patch as $cc => $gn)
$map[$cc] = $gn;
@@ -320,8 +302,7 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
$diff = '';
$fd = MakeFontDescriptor($fm, empty($map));
//Find font type
if($fontfile)
{
if ($fontfile) {
$ext = strtolower(substr($fontfile, -3));
if ($ext == 'ttf')
$type = 'TrueType';
@@ -330,8 +311,7 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
else
die('<b>Error:</b> unrecognized font file extension: ' . $ext);
}
else
{
else {
if ($type != 'TrueType' && $type != 'Type1')
die('<b>Error:</b> incorrect font type: ' . $type);
}
@@ -351,8 +331,7 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
$s.='$enc=\'' . $enc . "';\n";
$s.='$diff=\'' . $diff . "';\n";
$basename = substr(basename($afmfile), 0, -4);
if($fontfile)
{
if ($fontfile) {
//Embedded font
if (!file_exists($fontfile))
die('<b>Error:</b> font file not found: ' . $fontfile);
@@ -363,12 +342,10 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
die('<b>Error:</b> Can\'t open ' . $fontfile);
$file = fread($f, filesize($fontfile));
fclose($f);
if($type=='Type1')
{
if ($type == 'Type1') {
//Find first two sections and discard third one
$header = (ord($file[0]) == 128);
if($header)
{
if ($header) {
//Strip first binary header
$file = substr($file, 6);
}
@@ -376,8 +353,7 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
if (!$pos)
die('<b>Error:</b> font file does not seem to be valid Type1');
$size1 = $pos + 6;
if($header && ord($file[$size1])==128)
{
if ($header && ord($file[$size1]) == 128) {
//Strip second binary header
$file = substr($file, 0, $size1) . substr($file, $size1 + 6);
}
@@ -387,28 +363,23 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
$size2 = $pos - $size1;
$file = substr($file, 0, $size1 + $size2);
}
if(function_exists('gzcompress'))
{
if (function_exists('gzcompress')) {
$cmp = $basename . '.z';
SaveToFile($cmp, gzcompress($file), 'b');
$s.='$file=\'' . $cmp . "';\n";
echo 'Font file compressed (' . $cmp . ')<br>';
}
else
{
} else {
$s.='$file=\'' . basename($fontfile) . "';\n";
echo '<b>Notice:</b> font file could not be compressed (zlib extension not available)<br>';
}
if($type=='Type1')
{
if ($type == 'Type1') {
$s.='$size1=' . $size1 . ";\n";
$s.='$size2=' . $size2 . ";\n";
}
else
$s.='$originalsize=' . filesize($fontfile) . ";\n";
}
else
{
else {
//Not embedded font
$s.='$file=' . "'';\n";
}
@@ -416,4 +387,5 @@ function MakeFont($fontfile, $afmfile, $enc='cp1252', $patch=array(), $type='Tru
SaveToFile($basename . '.php', $s, 't');
echo 'Font definition file generated (' . $basename . '.php' . ')<br>';
}
?>

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Symbol';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Times-Roman';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Times-Bold';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Times-BoldItalic';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'Times-Italic';
$up = -100;

View File

@@ -1,4 +1,5 @@
<?php
$type = 'Core';
$name = 'ZapfDingbats';
$up = -100;

1804
fpdf.php Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -24,7 +24,6 @@
require_once 'version.inc';
define('SERVIDOR', 'localhost'); //Ubicación del servidor MySQL
define('PUERTO', '3306'); //Puerto donde se conecta a MySQL
define('BASEDATOS', 'Inventario2'); //Nombre de la base de datos.
define('BASEDATOSTEST', 'Inventario_test'); //Base de datos para los tests.
define('USUARIO', 'test'); //Usuario con permisos de lectura/escritura en la base de datos

View File

@@ -23,5 +23,5 @@
*/
define('AUTOR', 'Ricardo Montañana Gómez');
define('VERSION', '1.04');
define('VERSION', '1.03b');
?>

View File

@@ -22,8 +22,8 @@
$host="localhost";
$baseAnt="Inventario";
$baseNueva="Inventario2";
$usuario="test";
$claveUsuario="tset";
$usuario="root";
$claveUsuario="galeote";
$probar=false;

View File

@@ -0,0 +1,75 @@
<?php
require_once 'Configuracion.php';
/**
* Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2014-03-07 at 23:58:14.
*/
class ConfiguracionTest extends PHPUnit_Framework_TestCase {
/**
* @var Configuracion
*/
protected $config;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
$this->config = new Configuracion;
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
}
/**
* @covers Configuracion::ejecuta
*/
public function testEjecuta()
{
$this->assertFileExists('inc/Configuracion.inc', "El fichero de configuración no existe");
$permisos = fileperms('inc/Configuracion.inc');
//Comprueba que el propietario o el grupo tengan derecho de escritura
$test = $permisos & 0x0080 || $permisos & 0x0010;
$this->assertTrue($test, "El fichero de configuración no tiene los permisos adecuados");
//Comprueba que existan todas las claves editables en el fichero de configuración.
$fichero = $this->config->obtieneFichero();
$this->assertNotNull($fichero, "El fichero de configuración no se ha leído o no tiene contenido");
$lineas = explode("\n", $fichero);
$campos = $this->config->obtieneLista();
$numero = 0;
$lista = implode(",", $campos);
//var_dump($campos);
//var_dump($lista);
foreach ($lineas as $linea) {
if (stripos($linea, "DEFINE") !== false) {
$this->assertStringMatchesFormat("define('%s', '%s');%S", $linea, "La línea [" . $linea . "] del fichero de configuración no tiene el formato correcto");
$this->config->obtieneDatos($linea, $clave, $valor);
if (stripos($lista, $clave) !== false) {
$this->assertContains($clave, $campos, "El fichero de configuración no tiene la clave [" . $clave . "]");
$numero++;
$verificados[] = $clave;
}
}
}
$this->assertCount($numero, $campos, "No se han verificado todas las claves");
if ($numero != count($campos)) {
echo "Las claves verificadas han sido: \n";
var_export($verificados);
}
// @todo comprobar que la salida incluye una tabla con todos los campos editables.
// @todo comprobar que los valores seleccionados se corresponden co los del fichero
$salida = $this->config->ejecuta();
}
}
?>

47
tests/MenuTest.php Normal file
View File

@@ -0,0 +1,47 @@
<?php
require_once('Menu.php');
/**
* Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2014-03-08 at 17:47:42.
*/
class MenuTest extends PHPUnit_Framework_TestCase {
/**
* @var Menu
*/
protected $object;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*/
protected function setUp()
{
$this->object = new Menu('inc/inventario.menu');
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
}
/**
* @covers Menu::insertaMenu
* @todo Implement testInsertaMenu().
*/
public function testInsertaMenu()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}
?>

204
tests/SqlTest.php Normal file
View File

@@ -0,0 +1,204 @@
<?php
require_once('inc/configuracion.inc');
require_once('Sql.php');
/**
* Generated by PHPUnit_SkeletonGenerator 1.2.1 on 2014-03-08 at 01:19:34.
*/
class SqlTest extends PHPUnit_Framework_TestCase {
/**
* @var Sql
*/
protected $bd;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
* @covers Sql::__construct
* @uses Sql
*/
protected function setUp()
{
$this->bd = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOSTEST);
$this->assertFalse($this->bd->error(), "No se ha conectado a la base de datos de pruebas [" . BASEDATOSTEST . "]");
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*/
protected function tearDown()
{
}
/**
* @covers Sql::__destruct
* @todo Implement test__destruct().
*/
public function test__destruct()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::filtra
* @todo Implement testFiltra().
*/
public function testFiltra()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::ejecuta
* @todo Implement testEjecuta().
*/
public function testEjecuta()
{
}
/**
* @covers Sql::procesaResultado
* @todo Implement testProcesaResultado().
*/
public function testProcesaResultado()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::camposResultado
* @todo Implement testCamposResultado().
*/
public function testCamposResultado()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::numeroTuplas
* @todo Implement testNumeroTuplas().
*/
public function testNumeroTuplas()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::error
* @todo Implement testError().
*/
public function testError()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::mensajeError
* @todo Implement testMensajeError().
*/
public function testMensajeError()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::estructura
* @todo Implement testEstructura().
*/
public function testEstructura()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::ultimoId
* @todo Implement testUltimoId().
*/
public function testUltimoId()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::obtieneManejador
* @todo Implement testObtieneManejador().
*/
public function testObtieneManejador()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::comienzaTransaccion
* @todo Implement testComienzaTransaccion().
*/
public function testComienzaTransaccion()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::abortaTransaccion
* @todo Implement testAbortaTransaccion().
*/
public function testAbortaTransaccion()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* @covers Sql::confirmaTransaccion
* @todo Implement testConfirmaTransaccion().
*/
public function testConfirmaTransaccion()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}
?>