add clickLink to video widgets

This commit is contained in:
j 2012-01-17 21:13:46 +05:30
parent 41e191f217
commit f2d7beeb22
6 changed files with 23 additions and 4 deletions

View file

@ -11,6 +11,7 @@ Ox.ArrayEditable = function(options, self) {
tooltip: 'Doubleclick to add ' + (options.itemName || 'item')
}, self)
.defaults({
clickLink: null,
editable: true,
itemName: 'item',
items: [],
@ -118,6 +119,7 @@ Ox.ArrayEditable = function(options, self) {
that.empty();
if (self.options.items.length == 0) {
Ox.Editable({
clickLink: self.options.clickLink,
editable: false,
type: 'text',
value: self.options.placeholder
@ -135,6 +137,7 @@ Ox.ArrayEditable = function(options, self) {
}
self.$items[i] = Ox.Editable({
blurred: self.editing && i == self.selected ? blur : false,
clickLink: self.options.clickLink,
editable: self.options.editable && item.editable,
editing: self.editing && i == self.selected,
/*

View file

@ -43,11 +43,18 @@ Ox.Editable = function(options, self) {
.bindEvent({
doubleclick: edit,
singleclick: function(e) {
if ($(e.target).is('a')) {
var $target = $(e.target),
$parent = $target.parent();
while(!$target.is('a') && !$parent.is('.OxEditableElement')) {
$target = $parent;
$parent = $target.parent();
}
if($target.is('a')) {
if (self.options.clickLink) {
e.target = $target[0];
self.options.clickLink(e);
} else {
document.location.href = $(e.target).attr('href');
document.location.href = $target.attr('href');
}
}
}

View file

@ -22,6 +22,7 @@ Ox.AnnotationFolder = function(options, self) {
self = self || {};
var that = Ox.Element({}, self)
.defaults({
clickLink: null,
collapsed: false,
editable: false,
id: '',
@ -127,7 +128,8 @@ Ox.AnnotationFolder = function(options, self) {
})
.bindEvent({
select: function(data) {
if (!data.id && Ox.getObjectById(self.options.items, self.options.selected).event) {
Ox.print('SELECT >>> ', data)
if (!data.id && self.options.selected && Ox.getObjectById(self.options.items, self.options.selected).event) {
// only deselect annotation if the event deselect was not
// caused by switching to an annotation without event
self.$annotations.options({selected: ''});
@ -154,7 +156,7 @@ Ox.AnnotationFolder = function(options, self) {
.bindEvent({
// FIXME: should be select, not selectplace
selectplace: function(data) {
if (!data.id && Ox.getObjectById(self.options.items, self.options.selected).place) {
if (!data.id && self.options.selected && Ox.getObjectById(self.options.items, self.options.selected).place) {
// only deselect annotation if the place deselect was not
// caused by switching to an annotation without place
self.$annotations.options({selected: ''});
@ -189,6 +191,7 @@ Ox.AnnotationFolder = function(options, self) {
}
self.$annotations = Ox.ArrayEditable({
clickLink: self.options.clickLink,
editable: self.options.editable,
items: self.annotations,
placeholder: 'No ' + self.options.title,

View file

@ -10,6 +10,7 @@ Ox.AnnotationPanel = function(options, self) {
var that = Ox.Element({}, self)
.defaults({
calendarSize: 256,
clickLink: null,
editable: false,
font: 'small',
layers: [],
@ -149,6 +150,7 @@ Ox.AnnotationPanel = function(options, self) {
selected = item ? item.id : '';
self.$folder[i] = Ox.AnnotationFolder(
Ox.extend({
clickLink: self.options.clickLink,
collapsed: !self.options.showLayers[layer.id],
editable: self.options.editable,
font: self.options.font,

View file

@ -25,6 +25,7 @@ Ox.VideoEditor = function(options, self) {
annotationsSize: 256,
annotationsSort: 'position',
censored: [],
clickLink: null,
cuts: [],
duration: 0,
enableSubtitles: false,
@ -595,6 +596,7 @@ Ox.VideoEditor = function(options, self) {
self.$annotationPanel = Ox.AnnotationPanel({
calendarSize: self.options.annotationsCalendarSize,
clickLink: self.options.clickLink,
editable: true,
font: self.options.annotationsFont,
'in': self.options['in'],

View file

@ -21,6 +21,7 @@ Ox.VideoPanel = function(options, self) {
annotationsSize: 256,
annotationsSort: 'position',
censored: [],
clickLink: null,
cuts: [],
duration: 0,
enableSubtitles: false,
@ -168,6 +169,7 @@ Ox.VideoPanel = function(options, self) {
self.$annotationPanel = Ox.AnnotationPanel({
calendarSize: self.options.annotationsCalendarSize,
clickLink: self.options.clickLink,
editable: false,
font: self.options.annotationsFont,
'in': self.options['in'],