Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Roque
erp5
Commits
7e6d2192
Commit
7e6d2192
authored
Apr 26, 2018
by
Mukul
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[erp5_mutlimedia] Adds functionality to reuse the same player controller for audio files.
parent
910ebf35
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
24 deletions
+46
-24
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player.js.js
...m/portal_skins/erp5_multimedia/gadget_custom_player.js.js
+33
-14
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player_controller.js.js
...ins/erp5_multimedia/gadget_custom_player_controller.js.js
+11
-8
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player_controller_fallback.js.js
...multimedia/gadget_custom_player_controller_fallback.js.js
+2
-2
No files found.
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player.js.js
View file @
7e6d2192
...
...
@@ -45,7 +45,7 @@
play_button
.
classList
.
add
(
'
ui-icon-play
'
);
play_button
.
classList
.
remove
(
'
ui-icon-pause
'
);
}
return
gadget
.
getDeclaredGadget
(
'
controller
'
)
return
gadget
.
getDeclaredGadget
(
gadget
.
params
.
scope
)
.
push
(
function
(
controller
)
{
return
controller
.
handlePlayPause
(
gadget
.
state
.
play
);
});
...
...
@@ -62,7 +62,7 @@
volume_button
.
classList
.
remove
(
'
ui-icon-volume-off
'
);
volume_button
.
classList
.
add
(
'
ui-icon-volume-up
'
);
}
return
gadget
.
getDeclaredGadget
(
'
controller
'
)
return
gadget
.
getDeclaredGadget
(
gadget
.
params
.
scope
)
.
push
(
function
(
controller
)
{
return
controller
.
handleSound
(
gadget
.
state
.
mute
);
});
...
...
@@ -75,14 +75,24 @@
var
name_array
=
doc
.
title
.
split
(
'
.
'
),
type
=
name_array
[
name_array
.
length
-
1
];
if
(
type
===
'
mp3
'
&&
MediaSource
.
isTypeSupported
(
'
audio/mpeg
'
))
{
gadget
.
params
.
scope
=
'
controller
'
;
if
(
gadget
.
params
.
controller
)
{
return
gadget
.
getDeclaredGadget
(
'
controller
'
);
}
gadget
.
params
.
controller
=
true
;
return
gadget
.
declareGadget
(
'
gadget_custom_player_controller.html
'
,
{
element
:
gadget
.
element
.
querySelector
(
'
.controller
'
),
scope
:
'
controller
'
});
}
gadget
.
params
.
scope
=
'
controller_fallback
'
;
if
(
gadget
.
params
.
contoller_fallback
)
{
return
gadget
.
getDeclaredGadget
(
'
controller_fallback
'
);
}
gadget
.
params
.
controller_fallback
=
true
;
return
gadget
.
declareGadget
(
'
gadget_custom_player_controller_fallback.html
'
,
{
element
:
gadget
.
element
.
querySelector
(
'
.controller
'
),
scope
:
'
controller
'
scope
:
'
controller
_fallback
'
});
})
.
push
(
function
(
controller
)
{
...
...
@@ -93,18 +103,21 @@
})
.
push
(
function
()
{
if
(
params
.
auto_play
)
{
return
gadget
.
changeState
({
play
:
true
,
auto_play
:
true
});
return
gadget
.
changeState
({
play
:
true
,
auto_play
:
true
});
}
}).
push
(
function
()
{
return
RSVP
.
all
([
gadget
.
togglePlayPause
(
gadget
.
state
.
play
),
gadget
.
toggleSound
(
gadget
.
state
.
mute
)
]);
});
})
.
onStateChange
(
function
(
modification_dict
)
{
if
(
modification_dict
.
hasOwnProperty
(
'
play
'
))
{
return
this
.
togglePlayPause
(
modification_dict
.
play
);
}
if
(
modification_dict
.
hasOwnProperty
(
'
mute
'
))
{
return
this
.
toggleSound
(
modification_dict
.
mute
);
}
.
ready
(
function
()
{
this
.
params
=
{
controller
:
false
,
controller_fallback
:
false
};
})
.
declareService
(
function
()
{
...
...
@@ -114,7 +127,10 @@
'
click
'
,
false
,
function
()
{
return
gadget
.
changeState
({
play
:
!
gadget
.
state
.
play
});
return
gadget
.
changeState
({
play
:
!
gadget
.
state
.
play
})
.
push
(
function
()
{
return
gadget
.
togglePlayPause
(
gadget
.
state
.
play
);
});
},
true
);
...
...
@@ -127,7 +143,10 @@
'
click
'
,
false
,
function
()
{
return
gadget
.
changeState
({
mute
:
!
gadget
.
state
.
mute
});
return
gadget
.
changeState
({
mute
:
!
gadget
.
state
.
mute
})
.
push
(
function
()
{
return
gadget
.
toggleSound
(
gadget
.
state
.
mute
);
});
},
true
);
...
...
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player_controller.js.js
View file @
7e6d2192
...
...
@@ -49,8 +49,8 @@
return
buffer
;
},
function
(
error
)
{
if
((
error
.
constructor
.
name
===
'
jIOError
'
&&
error
.
status_code
===
404
)
||
(
error
.
target
&&
error
.
target
.
result
===
undefined
))
{
return
gadget
.
notifySubmitted
({
message
:
error
.
message
||
error
.
target
.
error
,
status
:
'
fail
'
});
(
error
.
target
&&
error
.
target
.
error
.
name
===
"
NotReadableError
"
))
{
return
gadget
.
notifySubmitted
({
message
:
error
.
message
||
error
.
target
.
error
.
message
,
status
:
'
fail
'
});
}
throw
error
;
});
...
...
@@ -97,10 +97,16 @@
.
declareMethod
(
'
render
'
,
function
(
params
)
{
var
gadget
=
this
,
audio
=
this
.
element
.
querySelector
(
'
audio
'
),
queue
=
new
RSVP
.
Queue
();
gadget
.
params
.
id
=
params
.
id
;
gadget
.
params
.
name
=
params
.
name
;
gadget
.
params
.
end
=
false
;
gadget
.
params
.
index
=
0
;
gadget
.
time_offset
=
0
;
gadget
.
params
.
mediaSource
=
new
MediaSource
();
audio
.
src
=
URL
.
createObjectURL
(
gadget
.
params
.
mediaSource
);
return
queue
.
push
(
function
()
{
...
...
@@ -126,15 +132,12 @@
var
audioContext
=
new
AudioContext
(),
audio
=
this
.
element
.
querySelector
(
'
audio
'
),
gain
=
audioContext
.
createGain
(),
source
=
audioContext
.
createMediaElementSource
(
audio
),
mediaSource
=
new
MediaSource
();
source
=
audioContext
.
createMediaElementSource
(
audio
);
audio
.
src
=
URL
.
createObjectURL
(
mediaSource
);
this
.
params
=
{
audioContext
:
audioContext
,
gain
:
gain
,
source
:
source
,
mediaSource
:
mediaSource
source
:
source
};
})
...
...
@@ -171,7 +174,7 @@
'
timeupdate
'
,
false
,
function
()
{
if
((
gadget
.
params
.
sourceBuffer
.
timestampOffset
-
audio
.
currentTime
)
<
10
&&
!
gadget
.
params
.
requested
)
{
if
((
(
gadget
.
params
.
sourceBuffer
.
timestampOffset
+
gadget
.
params
.
time_offset
)
-
audio
.
currentTime
)
<
10
&&
!
gadget
.
params
.
requested
)
{
gadget
.
params
.
requested
=
true
;
return
gadget
.
requestChunk
();
}
...
...
bt5/erp5_multimedia/SkinTemplateItem/portal_skins/erp5_multimedia/gadget_custom_player_controller_fallback.js.js
View file @
7e6d2192
...
...
@@ -33,8 +33,8 @@
})
.
push
(
undefined
,
function
(
error
)
{
if
((
error
.
constructor
.
name
===
'
jIOError
'
&&
error
.
status_code
===
404
)
||
(
error
.
target
&&
error
.
target
.
result
===
undefined
))
{
return
gadget
.
notifySubmitted
({
message
:
error
.
message
||
error
.
target
.
error
,
status
:
'
fail
'
});
(
error
.
target
&&
error
.
target
.
error
.
name
===
"
NotReadableError
"
))
{
return
gadget
.
notifySubmitted
({
message
:
error
.
message
||
error
.
target
.
error
.
message
,
status
:
'
fail
'
});
}
throw
error
;
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment