Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F884895
webvideo-edit.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
6 KB
Subscribers
None
webvideo-edit.js
View Options
/**
* modules/webvideo/webvideo-edit.js
* Frontend code for webvideo objects
*
* Copyright Gottfried Haider, Danja Vasiliev 2010.
* This source code is licensed under the GNU General Public License.
* See the file COPYING for more details.
*/
$
(
document
).
ready
(
function
()
{
//
// menu items
//
var
elem
=
$
(
'<img src="'
+
$
.
glue
.
base_url
+
'modules/webvideo/webvideo.png" alt="btn" title="add embedded youtube or vimeo video" width="32" height="32">'
);
$
(
elem
).
bind
(
'click'
,
function
(
e
)
{
var
url
=
prompt
(
'Enter the video URL (e.g. http://www.youtube.com/watch?v=_mdVHEus0T8)'
);
if
(
!
url
)
{
return
;
}
// determine provider
var
provider
=
false
;
if
(
url
.
indexOf
(
'youtube'
)
!=
-
1
)
{
var
start
=
url
.
indexOf
(
'v='
);
if
(
start
==
-
1
)
{
$
.
glue
.
error
(
'Error understanding the youtube link'
);
}
else
{
start
+=
2
;
var
end
=
url
.
indexOf
(
'&'
,
start
);
if
(
end
==
-
1
)
{
end
=
url
.
length
;
}
provider
=
'youtube'
;
var
id
=
url
.
slice
(
start
,
end
);
}
}
else
if
(
url
.
indexOf
(
'vimeo'
)
!=
-
1
)
{
var
start
=
url
.
indexOf
(
'.com/'
);
if
(
start
==
-
1
)
{
$
.
glue
.
error
(
'Error understanding the vimeo link'
);
}
else
{
start
+=
5
;
privider
=
'vimeo'
;
var
id
=
String
(
parseInt
(
url
.
slice
(
start
)));
}
}
else
{
$
.
glue
.
error
(
'Only youtube and vimeo videos are supported at the moment.'
);
}
if
(
provider
)
{
// create new object
$
.
glue
.
backend
({
method
:
'glue.create_object'
,
'page'
:
$
.
glue
.
page
},
function
(
data
)
{
var
elem
=
$
(
'<div class="webvideo resizable object" style="position: absolute;"></div>'
);
$
(
elem
).
attr
(
'id'
,
data
[
'name'
]);
// default width and height is set in the css
if
(
provider
==
'youtube'
)
{
var
child
=
$
(
'<iframe class="youtube-player" frameborder="0" src="http://www.youtube.com/embed/'
+
id
+
'?rel=0" style="border-width: 0px; height: 100%; position: absolute; width: 100%;" type="text/html"></iframe>'
);
}
else
if
(
provider
==
'vimeo'
)
{
var
child
=
$
(
'<iframe frameborder="0" src="http://player.vimeo.com/video/'
+
id
+
'?title=0&byline=0&portrait=0&color=ffffff" style="border-width: 0px; height: 100%; position: absolute; width: 100%;" type="text/html"></iframe>'
);
}
$
(
elem
).
append
(
child
);
// put the iframe behind some shield for editing
child
=
$
(
'<div class="glue-webvideo-handle glue-ui" title="drag here"></div>'
);
$
(
elem
).
append
(
child
);
$
(
'body'
).
append
(
elem
);
// make width and height explicit
$
(
elem
).
css
(
'width'
,
$
(
elem
).
width
()
+
'px'
);
$
(
elem
).
css
(
'height'
,
$
(
elem
).
height
()
+
'px'
);
// move to mouseclick
$
(
elem
).
css
(
'left'
,
(
e
.
pageX
-
$
(
elem
).
outerWidth
()
/
2
)
+
'px'
);
$
(
elem
).
css
(
'top'
,
(
e
.
pageY
-
$
(
elem
).
outerHeight
()
/
2
)
+
'px'
);
$
.
glue
.
object
.
register
(
elem
);
// set the provider and the id in the object file
$
.
glue
.
backend
({
method
:
'glue.update_object'
,
name
:
$
(
elem
).
attr
(
'id'
),
'webvideo-provider'
:
provider
,
'webvideo-id'
:
id
});
// and save the element
$
.
glue
.
object
.
save
(
elem
);
});
}
$
.
glue
.
menu
.
hide
();
});
$
.
glue
.
menu
.
register
(
'new'
,
elem
);
//
// context menu items
//
var
elem
=
$
(
'<div style="height: 32px; width: 32px;" title="toggle automatic playback of video (takes effect after a reload)">'
);
$
(
elem
).
bind
(
'glue-menu-activate'
,
function
(
e
)
{
var
obj
=
$
(
this
).
data
(
'owner'
);
if
(
$
(
obj
).
data
(
'webvideo-autoplay'
)
===
undefined
)
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
var
that
=
this
;
$
.
glue
.
backend
({
method
:
'glue.load_object'
,
name
:
$
(
obj
).
attr
(
'id'
)
},
function
(
data
)
{
if
(
data
[
'webvideo-autoplay'
]
==
'autoplay'
)
{
$
(
that
).
addClass
(
'glue-menu-enabled'
);
$
(
obj
).
data
(
'webvideo-autoplay'
,
'autoplay'
);
}
else
{
$
(
that
).
addClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-autoplay'
,
''
);
}
});
}
else
{
if
(
$
(
obj
).
data
(
'webvideo-autoplay'
)
==
'autoplay'
)
{
$
(
this
).
addClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
}
else
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
addClass
(
'glue-menu-disabled'
);
}
}
});
$
(
elem
).
bind
(
'click'
,
function
(
e
)
{
var
obj
=
$
(
this
).
data
(
'owner'
);
if
(
$
(
this
).
hasClass
(
'glue-menu-enabled'
))
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
addClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-autoplay'
,
''
);
$
.
glue
.
backend
({
method
:
'glue.object_remove_attr'
,
name
:
$
(
obj
).
attr
(
'id'
),
attr
:
'webvideo-autoplay'
});
}
else
if
(
$
(
this
).
hasClass
(
'glue-menu-disabled'
))
{
$
(
this
).
addClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-autoplay'
,
''
);
$
.
glue
.
backend
({
method
:
'glue.update_object'
,
name
:
$
(
obj
).
attr
(
'id'
),
'webvideo-autoplay'
:
'autoplay'
});
}
});
$
.
glue
.
contextmenu
.
register
(
'webvideo'
,
'webvideo-autoplay'
,
elem
);
elem
=
$
(
'<div style="height: 32px; width: 32px;" title="toggle looping of video (takes effect after a reload)">'
);
$
(
elem
).
bind
(
'glue-menu-activate'
,
function
(
e
)
{
var
obj
=
$
(
this
).
data
(
'owner'
);
if
(
$
(
obj
).
data
(
'webvideo-loop'
)
===
undefined
)
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
var
that
=
this
;
$
.
glue
.
backend
({
method
:
'glue.load_object'
,
name
:
$
(
obj
).
attr
(
'id'
)
},
function
(
data
)
{
if
(
data
[
'webvideo-loop'
]
==
'loop'
)
{
$
(
that
).
addClass
(
'glue-menu-enabled'
);
$
(
obj
).
data
(
'webvideo-loop'
,
'loop'
);
}
else
{
$
(
that
).
addClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-loop'
,
''
);
}
});
}
else
{
if
(
$
(
obj
).
data
(
'webvideo-loop'
)
==
'loop'
)
{
$
(
this
).
addClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
}
else
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
addClass
(
'glue-menu-disabled'
);
}
}
});
$
(
elem
).
bind
(
'click'
,
function
(
e
)
{
var
obj
=
$
(
this
).
data
(
'owner'
);
if
(
$
(
this
).
hasClass
(
'glue-menu-enabled'
))
{
$
(
this
).
removeClass
(
'glue-menu-enabled'
);
$
(
this
).
addClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-loop'
,
''
);
$
.
glue
.
backend
({
method
:
'glue.object_remove_attr'
,
name
:
$
(
obj
).
attr
(
'id'
),
attr
:
'webvideo-loop'
});
}
else
if
(
$
(
this
).
hasClass
(
'glue-menu-disabled'
))
{
$
(
this
).
addClass
(
'glue-menu-enabled'
);
$
(
this
).
removeClass
(
'glue-menu-disabled'
);
$
(
obj
).
data
(
'webvideo-loop'
,
'loop'
);
$
.
glue
.
backend
({
method
:
'glue.update_object'
,
name
:
$
(
obj
).
attr
(
'id'
),
'webvideo-loop'
:
'loop'
});
}
});
$
.
glue
.
contextmenu
.
register
(
'webvideo'
,
'webvideo-loop'
,
elem
);
// make sure we don't send to much over the wire for every save
$
.
glue
.
object
.
register_alter_pre_save
(
'iframe'
,
function
(
obj
,
orig
)
{
$
(
obj
).
children
(
'iframe'
).
html
(
''
);
$
(
obj
).
children
(
'.glue-webvideo-handle'
).
remove
();
});
});
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Apr 6, 11:24 (2 w, 19 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23430
Default Alt Text
webvideo-edit.js (6 KB)
Attached To
rZED Zed
Event Timeline
Log In to Comment