Index: mythweb/skins/default/music.css =================================================================== --- mythweb/skins/default/music.css (revision 0) +++ mythweb/skins/default/music.css (revision 0) @@ -0,0 +1,471 @@ +mp3act { + padding: 22px; + margin:0; + color: #333; + text-align: center; + font: 65% Verdana, Sans-serif; +} + +h2.music{ + font-size: 100%; + margin:0; + padding: 0 0 5px 0; + +} +ul.music{ + list-style-type: none; +} +a.music{ + color: blue; +} + +a.music:hover{ + /*color: #fff; + background: #F21518; + text-decoration: none;*/ + color: #F21518; +} +img{ + border: 0; +} +input,select{ + border: 1px solid #ccc; + border-color: #aaa #ccc #ccc #aaa; + background: #f3f3f3; + color: #555; + font-size: 100%; + padding: 2px 3px; + vertical-align: middle; + +} +input.check{ + border:0; + padding:0; + background: transparent; +} +select{ + padding: 2px 0 2px 3px; +} +input:focus{ + border: 1px solid #999; + background: #FBF9D3; + color: #000; + border-color: #777 #bbb #bbb #777; +} + +input.btn,input.redbtn{ + background: #244A79; + color: #fff; + padding: 2px; + border-color: #0E2F58; + font: normal 10px sans-serif; +} +input.redbtn{ + background: #F21518; +} +input.redbtn:hover{ + background: #BE0D0F; +} +input.btn:hover{ + background: #0E2F58; +} + +input.btn2{ + font-weight: bold; + padding: 2px; +} + +input.btn2:hover{ + background: #eee; + border-color: #888; + color: #222; +} + +.left{ + float: left; +} +.right{ + float: right; +} +.center{ + text-align: center; +} +.clear{ + clear: both; +} +.error{ + color: #E63838; + font-weight: bold; +} +p#error{ + color: #f20000; + font-weight: bold; +} +#breadcrumb{ + height: 14px; + padding:2px 0 0 0; +} +#breadcrumb span{ +position: relative; +} +#breadcrumb span:hover ul{ + display: block; +} +#breadcrumb ul{ + z-index: 5; + border: 1px solid #333; + display: none; + top:12px; + left:0; + position: absolute; + background: transparent url("./img/music/libg.png"); + color: #fff; + margin:-1px 0 0 0; + padding:0; + width: 150px; + +} +#breadcrumb ul#letters{ + left: -55px; + width: auto; +} +#breadcrumb span{ + padding: 0; + margin:0; +} +#breadcrumb ul li{ +width: 100%; + padding:0; + margin:0; + z-index: 6; +} +#breadcrumb ul li a{ + display: block; + padding: 2px 4px; + color: #fff; + margin:0; + z-index: 5; + text-decoration: none; + font-weight: normal; + font-size: 90%; +} + +#breadcrumb ul#letters li{ + float: left; + +} +#breadcrumb ul#letters li a{ + float: left; + +} +#breadcrumb ul li a:hover{ + background: #FCF7A5; + color: #000; +} +#breadcrumb ul#letters li a:hover{ + background: #FCF7A5; + color: #000; +} +#topinfo{ + + font-size: 90%; + color: #666; + text-align: left; + padding: 0 0 4px 0; + +} +p.pad{ + padding: 0px 8px; +} + +#wrap{ + /*background: #fff; + border: 1px solid #ccc;*/ + text-align: left; + padding: 0px; + margin:0; + position: relative; + + color: #333; +} + +#header{ + position: relative; +/* background: #0E2F58;*/ + height: 50px; + color: #fff; + padding: 8px 0 0px 15px; +} +#header #controls{ + float: right; + background: transparent; + height: 48px; + margin-right: 8px; + width: 48%; + font-size: 90%; + line-height: 1.1em; + color: #fff; +} + +#header #controls .buttons{ + float: left; + margin: 3px 5px 0 5px; +} +#header #controls .current{ + float: left; + margin-top: 3px; + +} +#header h1{ + color: #9ABEE5; + padding: 0; + margin:0; + font-size: 150%; +} +ul#nav{ + position: absolute; + bottom:0; + list-style-type: none; + margin:0; + padding:0; +} +ul#nav li{ + float: left; + margin-right: 5px; +} +ul#nav li a{ + display: block; + background: #265990; //#244A79; + padding: 4px 5px; + color: #dedede; + text-decoration: none; + margin:0; +} +ul#nav li a:hover{ + background: #416899; + color: #fff; +} +ul#nav li a.c{ + background: #fff; + color: #F48603; + font-weight: bold; +} +#loading{ + display: none; + position: absolute; + top: 80px; + color: #78B855; + padding: 10px; + background: #CCFF99; + border: 1px solid #78B855; + z-index: 4; + left: 30%; +} +#loading h1{ + font-size: 140%; +} +#left{ + float: left; + width: 48%; + margin: 15px 0 25px 15px; +} +#right{ + float: right; + width: 45%; + margin: 15px 15px 25px 0; + +} +.box{ + background: #E0E0E0; + border: 1px solid #ccc; + padding: 0 0 8px 0; + position: relative; +} +#box_extra{ + display: none; + z-index: 2; + position: absolute; + top: 25px; + left:5%; + width: 450px; + height: 190px; + background: transparent url("./img/music/libg.png"); + color: #fff; + font-size: 110%; + padding: 5px; +} +#box_extra h2{ + font-size: 120%; +} +#box_extra input{ + background: #333; + border-color: #999; + color: #fff; +} + +#box_extra select{ + background: #333; + border-color: #999; + color: #fff; +} + +.box ul{ + margin: 0 10px; + padding: 0px 0px; + background: #f3f3f3; + clear: both; +} +.box ul li{ + padding: 2px 0 1px 4px; + border: 1px solid transparent; + border-width: 1px 0px 1px 0px; + position: relative; + background: #f3f3f3; +} + +.box ul li.alt{ + background: #DEE6EC; +} +.box ul li span.user{ + float: left; + width: 200px; +} +.box ul li small{ + color: #888; + letter-spacing: -1px; +} + +.box ul li span.links a{ + text-decoration: underline; + color: blue; +} +.box ul li span.links a:hover{ + color: red; +} +.box ul li:hover{ + background: #FCF7A5; + color: #000; + border-color: #999; +} +.box ul li.currentplay{ + background: #96D1EF; + color: #000; + border-color: #666; +} + +.box ul li p{ + z-index:5; + display: none; + position: absolute; + top: 7px; + font-size: 90%; + padding: 2px; + right: 15px; + width: 145px; + background: transparent url("./img/music/libg.png"); + color: #fff; +} + +.box ul li:hover p{ + display: block; +} + +.box ul li a{ + text-decoration: none; + color: #333; +} +.box ul li a:hover{ + color: #000; +} +.box ul#letters{ + height: 18px; + padding-left: 5px; +} + +.box ul#letters li{ + float: left; + padding: 2px 2px; + background: none; + border: 1px solid transparent; +} + +.box ul#letters li:hover{ + background: #FCF7A5; + border-color: #999; +} + +.box p{ + padding: 0 10px; + margin: 8px 0 4px 0; + +} +.box p img{ + display: block; + width: 60px; + float: right; + padding: 2px; + background: #f3f3f3; + border: 1px solid #999; + margin-bottom: 4px; +} +.box img#bigart{ + display: none; + position: absolute; + z-index: 2; + background: #f3f3f3; + padding: 3px; + border: 1px solid #666; + top:10px; + right: 80px; +} +.box p img:hover{ + border-color: #555; + cursor: pointer; +} + +.box .head{ + padding: 4px; + background: #ccc; +} +.box .head a{ + background: #244A79; + color: #fff; + padding: 2px; + text-decoration: none; + font: normal 9px sans-serif; +} +.box .head a:hover{ + background: #0E2F58; +} +.box .head a.red{ + background: #F21518; +} +.box .head a.red:hover{ + background: #BE0D0F; +} +.box .head h2{ + font-size: 120%; + padding: 0; +} +.box h3{ + padding: 0 0 0 0px; + margin: 0 10px 0 10px; + font-size: 120%; + border-bottom: 1px solid #ccc; +} + +.loginbox{ + width: 250px; + margin:0 auto; + background: #fff; + border: 1px solid #ccc; + text-align: left; +} +.loginbox p{ + padding: 8px 15px; + margin:0; +} +.noborder{ + background: transparent; + border:0; +} Property changes on: mythweb/skins/default/music.css ___________________________________________________________________ Name: svn:executable + * Index: mythweb/skins/default/img/music/ff_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/ff_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/libg.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/libg.png ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/rew_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/rew_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/paypal_donate.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/paypal_donate.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/vol.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/vol.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/rem.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/rem.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/up.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/up.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/play.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/play.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/play_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/play_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/stop_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/stop_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/down.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/down.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/add.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/add.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/default/img/music/progress_bar.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/default/img/music/progress_bar.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/music.css =================================================================== --- mythweb/skins/grey/music.css (revision 0) +++ mythweb/skins/grey/music.css (revision 0) @@ -0,0 +1,471 @@ +mp3act { + padding: 22px; + margin:0; + color: #333; + text-align: center; + font: 65% Verdana, Sans-serif; +} + +h2.music{ + font-size: 100%; + margin:0; + padding: 0 0 5px 0; + +} +ul.music{ + list-style-type: none; +} +a.music{ + color: blue; +} + +a.music:hover{ + /*color: #fff; + background: #F21518; + text-decoration: none;*/ + color: #F21518; +} +img{ + border: 0; +} +input,select{ + border: 1px solid #ccc; + border-color: #aaa #ccc #ccc #aaa; + background: #f3f3f3; + color: #555; + font-size: 100%; + padding: 2px 3px; + vertical-align: middle; + +} +input.check{ + border:0; + padding:0; + background: transparent; +} +select{ + padding: 2px 0 2px 3px; +} +input:focus{ + border: 1px solid #999; + background: #FBF9D3; + color: #000; + border-color: #777 #bbb #bbb #777; +} + +input.btn,input.redbtn{ + background: #244A79; + color: #fff; + padding: 2px; + border-color: #0E2F58; + font: normal 10px sans-serif; +} +input.redbtn{ + background: #F21518; +} +input.redbtn:hover{ + background: #BE0D0F; +} +input.btn:hover{ + background: #0E2F58; +} + +input.btn2{ + font-weight: bold; + padding: 2px; +} + +input.btn2:hover{ + background: #eee; + border-color: #888; + color: #222; +} + +.left{ + float: left; +} +.right{ + float: right; +} +.center{ + text-align: center; +} +.clear{ + clear: both; +} +.error{ + color: #E63838; + font-weight: bold; +} +p#error{ + color: #f20000; + font-weight: bold; +} +#breadcrumb{ + height: 14px; + padding:2px 0 0 0; +} +#breadcrumb span{ +position: relative; +} +#breadcrumb span:hover ul{ + display: block; +} +#breadcrumb ul{ + z-index: 5; + border: 1px solid #333; + display: none; + top:12px; + left:0; + position: absolute; + background: transparent url("./img/music/libg.png"); + color: #fff; + margin:-1px 0 0 0; + padding:0; + width: 150px; + +} +#breadcrumb ul#letters{ + left: -55px; + width: auto; +} +#breadcrumb span{ + padding: 0; + margin:0; +} +#breadcrumb ul li{ +width: 100%; + padding:0; + margin:0; + z-index: 6; +} +#breadcrumb ul li a{ + display: block; + padding: 2px 4px; + color: #fff; + margin:0; + z-index: 5; + text-decoration: none; + font-weight: normal; + font-size: 90%; +} + +#breadcrumb ul#letters li{ + float: left; + +} +#breadcrumb ul#letters li a{ + float: left; + +} +#breadcrumb ul li a:hover{ + background: #FCF7A5; + color: #000; +} +#breadcrumb ul#letters li a:hover{ + background: #FCF7A5; + color: #000; +} +#topinfo{ + + font-size: 90%; + color: #666; + text-align: left; + padding: 0 0 4px 0; + +} +p.pad{ + padding: 0px 8px; +} + +#wrap{ + /*background: #fff; + border: 1px solid #ccc;*/ + text-align: left; + padding: 0px; + margin:0; + position: relative; + + color: #333; +} + +#header{ + position: relative; +/* background: #0E2F58;*/ + height: 50px; + color: #fff; + padding: 8px 0 0px 15px; +} +#header #controls{ + float: right; + background: transparent; + height: 48px; + margin-right: 8px; + width: 48%; + font-size: 90%; + line-height: 1.1em; + color: #fff; +} + +#header #controls .buttons{ + float: left; + margin: 3px 5px 0 5px; +} +#header #controls .current{ + float: left; + margin-top: 3px; + +} +#header h1{ + color: #9ABEE5; + padding: 0; + margin:0; + font-size: 150%; +} +ul#nav{ + position: absolute; + bottom:0; + list-style-type: none; + margin:0; + padding:0; +} +ul#nav li{ + float: left; + margin-right: 5px; +} +ul#nav li a{ + display: block; + background: #666666; //#244A79; + padding: 4px 5px; + color: #ffffff; + text-decoration: none; + margin:0; +} +ul#nav li a:hover{ + background: #416899; + color: #fff; +} +ul#nav li a.c{ + background: #fff; + color: #F48603; + font-weight: bold; +} +#loading{ + display: none; + position: absolute; + top: 80px; + color: #78B855; + padding: 10px; + background: #CCFF99; + border: 1px solid #78B855; + z-index: 4; + left: 30%; +} +#loading h1{ + font-size: 140%; +} +#left{ + float: left; + width: 48%; + margin: 15px 0 25px 15px; +} +#right{ + float: right; + width: 45%; + margin: 15px 15px 25px 0; + +} +.box{ + background: #E0E0E0; + border: 1px solid #ccc; + padding: 0 0 8px 0; + position: relative; +} +#box_extra{ + display: none; + z-index: 2; + position: absolute; + top: 25px; + left:5%; + width: 450px; + height: 190px; + background: transparent url("./img/music/libg.png"); + color: #fff; + font-size: 110%; + padding: 5px; +} +#box_extra h2{ + font-size: 120%; +} +#box_extra input{ + background: #333; + border-color: #999; + color: #fff; +} + +#box_extra select{ + background: #333; + border-color: #999; + color: #fff; +} + +.box ul{ + margin: 0 10px; + padding: 0px 0px; + background: #f3f3f3; + clear: both; +} +.box ul li{ + padding: 2px 0 1px 4px; + border: 1px solid transparent; + border-width: 1px 0px 1px 0px; + position: relative; + background: #f3f3f3; +} + +.box ul li.alt{ + background: #DEE6EC; +} +.box ul li span.user{ + float: left; + width: 200px; +} +.box ul li small{ + color: #888; + letter-spacing: -1px; +} + +.box ul li span.links a{ + text-decoration: underline; + color: blue; +} +.box ul li span.links a:hover{ + color: red; +} +.box ul li:hover{ + background: #FCF7A5; + color: #000; + border-color: #999; +} +.box ul li.currentplay{ + background: #96D1EF; + color: #000; + border-color: #666; +} + +.box ul li p{ + z-index:5; + display: none; + position: absolute; + top: 7px; + font-size: 90%; + padding: 2px; + right: 15px; + width: 145px; + background: transparent url("./img/music/libg.png"); + color: #fff; +} + +.box ul li:hover p{ + display: block; +} + +.box ul li a{ + text-decoration: none; + color: #333; +} +.box ul li a:hover{ + color: #000; +} +.box ul#letters{ + height: 18px; + padding-left: 5px; +} + +.box ul#letters li{ + float: left; + padding: 2px 2px; + background: none; + border: 1px solid transparent; +} + +.box ul#letters li:hover{ + background: #FCF7A5; + border-color: #999; +} + +.box p{ + padding: 0 10px; + margin: 8px 0 4px 0; + +} +.box p img{ + display: block; + width: 60px; + float: right; + padding: 2px; + background: #f3f3f3; + border: 1px solid #999; + margin-bottom: 4px; +} +.box img#bigart{ + display: none; + position: absolute; + z-index: 2; + background: #f3f3f3; + padding: 3px; + border: 1px solid #666; + top:10px; + right: 80px; +} +.box p img:hover{ + border-color: #555; + cursor: pointer; +} + +.box .head{ + padding: 4px; + background: #ccc; +} +.box .head a{ + background: #244A79; + color: #fff; + padding: 2px; + text-decoration: none; + font: normal 9px sans-serif; +} +.box .head a:hover{ + background: #0E2F58; +} +.box .head a.red{ + background: #F21518; +} +.box .head a.red:hover{ + background: #BE0D0F; +} +.box .head h2{ + font-size: 120%; + padding: 0; +} +.box h3{ + padding: 0 0 0 0px; + margin: 0 10px 0 10px; + font-size: 120%; + border-bottom: 1px solid #ccc; +} + +.loginbox{ + width: 250px; + margin:0 auto; + background: #fff; + border: 1px solid #ccc; + text-align: left; +} +.loginbox p{ + padding: 8px 15px; + margin:0; +} +.noborder{ + background: transparent; + border:0; +} Property changes on: mythweb/skins/grey/music.css ___________________________________________________________________ Name: svn:executable + * Index: mythweb/skins/grey/img/music/ff_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/ff_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/libg.png =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/libg.png ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/rew_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/rew_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/paypal_donate.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/paypal_donate.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/vol.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/vol.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/rem.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/rem.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/up.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/up.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/play.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/play.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/play_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/play_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/stop_big.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/stop_big.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/down.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/down.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/add.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/add.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/skins/grey/img/music/progress_bar.gif =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Property changes on: mythweb/skins/grey/img/music/progress_bar.gif ___________________________________________________________________ Name: svn:executable + * Name: svn:mime-type + application/octet-stream Index: mythweb/modules/music/mp3act_main.php =================================================================== --- mythweb/modules/music/mp3act_main.php (revision 0) +++ mythweb/modules/music/mp3act_main.php (revision 0) @@ -0,0 +1,84 @@ + + + + + + + +
+ + +require 'modules/_shared/tmpl/'.tmpl.'/footer.php'; +?> \ No newline at end of file Property changes on: mythweb/modules/music/mp3act_main.php ___________________________________________________________________ Name: svn:executable + * Index: mythweb/modules/music/handler.php =================================================================== --- mythweb/modules/music/handler.php (revision 9730) +++ mythweb/modules/music/handler.php (working copy) @@ -13,297 +13,23 @@ * /**/ -// Make sure the music directory exists - if (file_exists('data/music')) { - // File is not a directory or a symlink - if (!is_dir('data/music') && !is_link('data/music')) { - custom_error('An invalid file exists at data/music. Please remove it in' - .' order to use the music portions of MythWeb.'); - } - } -// Create the symlink, if possible. -// -// NOTE: Errors have been disabled because if I turn them on, people hosting -// MythWeb on Windows machines will have issues. I will turn the errors -// back on when I find a clean way to do so. -// - else { - $dir = $db->query_col('SELECT data - FROM settings - WHERE value="MusicLocation" AND hostname=?', - hostname - ); - if ($dir) { - $ret = @symlink($dir, 'data/music'); - if (!$ret) { - #custom_error("Could not create a symlink to $dir, the local MythMusic directory" - # .' for this hostname ('.hostname.'). Please create a symlink to your' - # .' MythMusic directory at data/music in order to use the music' - # .' portions of MythWeb.'); - } - } - else { - #custom_error('Could not find a value in the database for the MythMusic directory' - # .' for this hostname ('.hostname.'). Please create a symlink to your' - # .' MythMusic directory at data/music in order to use the music' - # .' portions of MythWeb.'); - } - } - -// -// Someday, music.php will let us stream -// entire playlists to any spot on planet earth -// -require_once tmpl_dir.'music.php'; - -$mythmusic = new mythMusic(); -$mythmusic->display(); - -class mythMusic { - var $filterPlaylist; - var $filterArtist; - var $filterAlbum; - var $filterGenre; - var $filterRank; - var $filterSonglist; - var $keepFilters; - var $filter; - var $totalCount; - var $offset; - - var $result; - - - var $intid; - var $artist; - var $album; - var $title; - var $genre; - var $length; - var $rating; - var $filename; - var $urlfilename; - - var $alphalink; - var $alphaoffset; - - function mythMusic() - { - if($_GET['offset'] >=0 ) - $this->offset=$_GET['offset']; - else - $this->offset=0; - - /**** If alphalink set, then change offset to new value ****/ - if ($_GET['alphalink']) { - $alphalink = $_GET['alphalink']; - $result=mysql_query("select count(1) from musicmetadata where upper(artist) < ".escape($alphalink)); - $alphaoffset=mysql_fetch_row($result); - $this->offset=$alphaoffset[0]; - mysql_free_result($result); - } - - if($_GET['filterPlaylist']) - { - $this->filterPlaylist=$_GET['filterPlaylist']; - $_GET['filterPlaylist']; - } - else - $this->filterPlaylist="_All_"; - - if($_GET['filterArtist']) - { - $this->filterArtist=$_GET['filterArtist']; - } - else - $this->filterArtist="_All_"; - - if($_GET['filterAlbum']) - { - $this->filterAlbum=$_GET['filterAlbum']; - } - else - $this->filterAlbum="_All_"; - if($_GET['filterGenre']) - { - $this->filterGenre=$_GET['filterGenre']; - } - else - $this->filterGenre="_All_"; - - - if($_GET['filterRank']) - $this->filterRank=$_GET['filterRank']; - else - $this->filterRank="_All_"; - } - - function readRow() - { - - if($row=mysql_fetch_row($this->result)) - { - $this->intid=$row[0]; - $this->artist=$row[1]; - $this->album=$row[2]; - $this->title=$row[3]; - $this->genre=$row[4]; - $this->length=$row[5]; - $this->rating=$row[6]; - $this->filename=$row[7]; - - $this->urlfilename=root.'data/music'; - global $musicdir; - foreach (preg_split('/\//', substr($this->filename, strlen($musicdir))) as $dir) { - if (!$dir) continue; - $this->urlfilename .= '/'.rawurlencode(utf8tolocal($dir)); - } - - return(true); - } - return(false); - } - - - - function display() - { - $music = new Theme_music(); - $this->init($music->getMaxPerPage()); - $music->setOffset($this->offset); - $music->setTotalCount($this->totalCount); - - $music->print_header($this->filterPlaylist,$this->filterArtist,$this->filterAlbum,$this->filterGenre); - if($this->totalCount > 0) - { - while($this->readRow()) - { - $music->printDetail($this->title,$this->length,$this->artist,$this->album,$this->genre,$this->urlfilename); - } - } - else - { - $music->printNoDetail(); - } - if($this->result) - mysql_free_result($this->result); - - $music->print_footer(); - } - - function prepFilter() - { - $prevFilter=0; - $thisFilter=""; - - if($this->filterPlaylist != "_All_") - { - $playlistResult = mysql_query("select playlistid,name,songlist,hostname from musicplaylist where playlistid=".escape($this->filterPlaylist)); - if($playlistResult) - { - if(mysql_num_rows($playlistResult)==1) - { - $row=mysql_fetch_row($playlistResult); - if($row) - { - - $this->filterSonglist=$row[2]; - if($prevFilter==1) - $this->filter=$this->filter . "and intid in (" . $this->filterSonglist . ")"; - else - { - $this->filter="intid in (" . $this->filterSonglist . ")"; - $prevFilter=1; - } - - $this->keepFilters="&filterPlaylist=" . urlencode($this->filterPlaylist); - - } - } - } - } - - if($this->filterArtist != "_All_" ) - { - if($prevFilter==1) - $this->filter=$this->filter . "and artist=".escape($this->filterArtist); - else - { - $this->filter="artist=".escape($this->filterArtist); - $prevFilter=1; - } - - $this->keepFilters="&filterArtist=" . urlencode($this->filterArtist); - - } - if($this->filterAlbum != "_All_") - { - if($prevFilter==1) - { - $this->filter= $this->filter . "and album=\"" . $this->filterAlbum . "\""; - } - else - { - $this->filter="album=\"" . $this->filterAlbum . "\""; - $prevFilter=1; - } - $this->keepFilters =$this->keepFilters . "&filterAlbum=" . urlencode($this->filterAlbum) ; - - } - if($this->filterGenre != "_All_") - { - if($prevFilter==1) - { - $this->filter= $this->filter . "and genre=" . $this->filterGenre ; - } - else - { - $this->filter="genre=\"" . $this->filterGenre . "\""; - $prevFilter=1; - } - $this->keepFilters =$this->keepFilters . "&filterGenre=" . urlencode($this->filterGenre); - - } - - if($this->filterRank != "_All_") - { - if($prevFilter==1) - { - $this->filter=$this->filter . "and rank=" . $this->filterRank; - } - else - { - $this->filter="rank=" . $this->filterRank; - $prevFilter=1; - } - $this->keepFilters =$this->keepFilters . "&filterRank=" . urlencode($this->filterRank); - } - - - - } - - function init($maxPerPage) { - global $db; - $this->prepFilter(); - if (empty($this->filter)) - $this->totalCount = $db->query_col('SELECT COUNT(*) FROM musicmetadata'); - else - $this->totalCount = $db->query_col('SELECT COUNT(*) FROM musicmetadata WHERE '.$this->filter); - - if ($this->totalCount > 0) { - if($this->offset > 0) { - $limitText='LIMIT ' . $this->offset . ',' . $maxPerPage; - } - else - $limitText='LIMIT ' . $maxPerPage; - - if (empty($this->filter)) - $this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from musicmetadata order by artist,album,tracknum " . $limitText); - else - $this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from musicmetadata where $this->filter order by artist,album,tracknum $limitText"); - } - } -} - - + if (tmpl == "compact") + { + require_once("modules/music/music_handler.php"); + } + else + { + if (in_array($Path[1], array('mp3act_js.js.php', 'mp3act_fat.js', 'mp3act_hidden.php'))) + { + require_once 'modules/music/'.$Path[1]; + exit(); + } + if (strstr($Path[1],"mp3act_playstream.php") != false) + { + require_once 'modules/music/mp3act_playstream.php'; + exit(); + } + + require_once 'modules/music/mp3act_main.php'; + } +?> \ No newline at end of file Index: mythweb/modules/music/music_handler.php =================================================================== --- mythweb/modules/music/music_handler.php (revision 0) +++ mythweb/modules/music/music_handler.php (revision 0) @@ -0,0 +1,312 @@ +query_col('SELECT data + FROM settings + WHERE value="MusicLocation" AND hostname=?', + hostname + ); + if ($dir) { + $ret = @symlink($dir, 'data/music'); + if (!$ret) { + #custom_error("Could not create a symlink to $dir, the local MythMusic directory" + # .' for this hostname ('.hostname.'). Please create a symlink to your' + # .' MythMusic directory at data/music in order to use the music' + # .' portions of MythWeb.'); + } + } + else { + #custom_error('Could not find a value in the database for the MythMusic directory' + # .' for this hostname ('.hostname.'). Please create a symlink to your' + # .' MythMusic directory at data/music in order to use the music' + # .' portions of MythWeb.'); + } + } + +// +// Someday, music.php will let us stream +// entire playlists to any spot on planet earth +// +require_once tmpl_dir.'music.php'; + +$mythmusic = new mythMusic(); +$mythmusic->display(); + +class mythMusic { + var $filterPlaylist; + var $filterArtist; + var $filterAlbum; + var $filterGenre; + var $filterRank; + var $filterSonglist; + var $keepFilters; + var $filter; + var $totalCount; + var $offset; + + var $result; + + + var $intid; + var $artist; + var $album; + var $title; + var $genre; + var $length; + var $rating; + var $filename; + var $urlfilename; + + var $alphalink; + var $alphaoffset; + + function mythMusic() + { + if($_GET['offset'] >=0 ) + $this->offset=$_GET['offset']; + else + $this->offset=0; + + /**** If alphalink set, then change offset to new value ****/ + if ($_GET['alphalink']) { + $alphalink = $_GET['alphalink']; + + $result=mysql_query("SELECT count(1) FROM music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id WHERE (((UPPER(music_artists.artist_name))< \"".$alphalink."\")) ORDER BY music_artists.artist_name;"); + $alphaoffset=mysql_fetch_row($result); + $this->offset=$alphaoffset[0]; + mysql_free_result($result); + } + + if($_GET['filterPlaylist']) + { + $this->filterPlaylist=$_GET['filterPlaylist']; + $_GET['filterPlaylist']; + } + else + $this->filterPlaylist="_All_"; + + if($_GET['filterArtist']) + { + $this->filterArtist=$_GET['filterArtist']; + } + else + $this->filterArtist="_All_"; + + if($_GET['filterAlbum']) + { + $this->filterAlbum=$_GET['filterAlbum']; + } + else + $this->filterAlbum="_All_"; + if($_GET['filterGenre']) + { + $this->filterGenre=$_GET['filterGenre']; + } + else + $this->filterGenre="_All_"; + + + if($_GET['filterRank']) + $this->filterRank=$_GET['filterRank']; + else + $this->filterRank="_All_"; + } + + function readRow() + { + + if($row=mysql_fetch_row($this->result)) + { + $this->intid=$row[0]; + $this->artist=$row[1]; + $this->album=$row[2]; + $this->title=$row[3]; + $this->genre=$row[4]; + $this->length=$row[5]; + $this->rating=$row[6]; + $this->filename=$row[7]; + + $this->urlfilename=root.'data/music'; + global $musicdir; + foreach (preg_split('/\//', substr($this->filename, strlen($musicdir))) as $dir) { + if (!$dir) continue; + $this->urlfilename .= '/'.rawurlencode(utf8tolocal($dir)); + } + + return(true); + } + return(false); + } + + + + function display() + { + $music = new Theme_music(); + $this->init($music->getMaxPerPage()); + $music->setOffset($this->offset); + $music->setTotalCount($this->totalCount); + + $music->print_header($this->filterPlaylist,$this->filterArtist,$this->filterAlbum,$this->filterGenre); + if($this->totalCount > 0) + { + while($this->readRow()) + { + $music->printDetail($this->title,$this->length,$this->artist,$this->album,$this->genre,$this->urlfilename); + } + } + else + { + $music->printNoDetail(); + } + if($this->result) + mysql_free_result($this->result); + + $music->print_footer(); + } + + function prepFilter() + { + $prevFilter=0; + $thisFilter=""; + + if($this->filterPlaylist != "_All_") + { + $playlistResult = mysql_query("select playlistid,name,songlist,hostname from musicplaylist where playlistid=".escape($this->filterPlaylist)); + if($playlistResult) + { + if(mysql_num_rows($playlistResult)==1) + { + $row=mysql_fetch_row($playlistResult); + if($row) + { + + $this->filterSonglist=$row[2]; + if($prevFilter==1) + $this->filter=$this->filter . "and song_id in (" . $this->filterSonglist . ")"; + else + { + $this->filter="song_id in (" . $this->filterSonglist . ")"; + $prevFilter=1; + } + + $this->keepFilters="&filterPlaylist=" . urlencode($this->filterPlaylist); + + } + } + } + } + + if($this->filterArtist != "_All_" ) + { + if($prevFilter==1) + $this->filter=$this->filter . "and artist_name=".escape($this->filterArtist); + else + { + $this->filter="artist_name=".escape($this->filterArtist); + $prevFilter=1; + } + + $this->keepFilters="&filterArtist=" . urlencode($this->filterArtist); + + } + if($this->filterAlbum != "_All_") + { + if($prevFilter==1) + { + $this->filter= $this->filter . "and album_name=\"" . $this->filterAlbum . "\""; + } + else + { + $this->filter="album_name=\"" . $this->filterAlbum . "\""; + $prevFilter=1; + } + $this->keepFilters =$this->keepFilters . "&filterAlbum=" . urlencode($this->filterAlbum) ; + + } + if($this->filterGenre != "_All_") + { + if($prevFilter==1) + { + $this->filter= $this->filter . "and genre=" . $this->filterGenre ; + } + else + { + $this->filter="genre=\"" . $this->filterGenre . "\""; + $prevFilter=1; + } + $this->keepFilters =$this->keepFilters . "&filterGenre=" . urlencode($this->filterGenre); + + } + + if($this->filterRank != "_All_") + { + if($prevFilter==1) + { + $this->filter=$this->filter . "and rank=" . $this->filterRank; + } + else + { + $this->filter="rank=" . $this->filterRank; + $prevFilter=1; + } + $this->keepFilters =$this->keepFilters . "&filterRank=" . urlencode($this->filterRank); + } + + + + } + + function init($maxPerPage) { + global $db; + $this->prepFilter(); + if (empty($this->filter)) + $this->totalCount = $db->query_col('SELECT COUNT(*) FROM music_songs'); + else + $this->totalCount = $db->query_col('SELECT COUNT(*) FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id WHERE '.$this->filter); + if ($this->totalCount > 0) { + if($this->offset > 0) { + $limitText='LIMIT ' . $this->offset . ',' . $maxPerPage; + } + else + $limitText='LIMIT ' . $maxPerPage; + + if (empty($this->filter)) + + $this->result=mysql_query("SELECT music_songs.song_id, music_artists.artist_name, music_albums.album_name, music_songs.name, music_genres.genre, music_songs.length, music_songs.rating, music_songs.filename FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id order by artist_name,album_name,track " . $limitText); + //$this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from music_songs order by artist,album,tracknum " . $limitText); + else + $this->result=mysql_query("SELECT music_songs.song_id, music_artists.artist_name, music_albums.album_name, music_songs.name, music_genres.genre, music_songs.length, music_songs.rating, music_songs.filename FROM ((music_songs INNER JOIN music_artists ON music_songs.artist_id = music_artists.artist_id) INNER JOIN music_albums ON music_songs.album_id = music_albums.album_id) INNER JOIN music_genres ON music_songs.genre_id = music_genres.genre_id where $this->filter order by artist_name,album_name,track " . $limitText); + //$this->result=mysql_query("select intid,artist,album,title,genre,length,rating,filename from music_songs where $this->filter order by artist,album,tracknum $limitText"); + } + } +} + + Property changes on: mythweb/modules/music/music_handler.php ___________________________________________________________________ Name: svn:executable + * Index: mythweb/modules/music/mp3act_sajax.php =================================================================== --- mythweb/modules/music/mp3act_sajax.php (revision 0) +++ mythweb/modules/music/mp3act_sajax.php (revision 0) @@ -0,0 +1,308 @@ +$v) { + $esc_key = sajax_esc($k); + if (is_numeric($k)) + $s .= "$k: " . sajax_get_js_repr($v) . ", "; + else + $s .= "\"$esc_key\": " . sajax_get_js_repr($v) . ", "; + } + return substr($s, 0, -2) . " }"; + } + else { + $esc_val = sajax_esc($value); + $s = "\"$esc_val\""; + return $s; + } + } + + function sajax_handle_client_request() { + global $sajax_export_list; + + $mode = ""; + + if (! empty($_GET["rs"])) + $mode = "get"; + + if (!empty($_POST["rs"])) + $mode = "post"; + + if (empty($mode)) + return; + + $target = ""; + + if ($mode == "get") { + // Bust cache in the head + header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past + header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); + // always modified + header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 + header ("Pragma: no-cache"); // HTTP/1.0 + $func_name = $_GET["rs"]; + if (! empty($_GET["rsargs"])) + $args = $_GET["rsargs"]; + else + $args = array(); + } + else { + $func_name = $_POST["rs"]; + if (! empty($_POST["rsargs"])) + $args = $_POST["rsargs"]; + else + $args = array(); + } + + if (! in_array($func_name, $sajax_export_list)) + echo "-:$func_name not callable"; + else { + echo "+:"; + $result = call_user_func_array($func_name, $args); + echo "var res = " . sajax_get_js_repr($result) . "; res;"; + } + exit; + } + + function sajax_get_common_js() { + global $sajax_debug_mode; + global $sajax_request_type; + global $sajax_remote_uri; + + $t = strtoupper($sajax_request_type); + if ($t != "" && $t != "GET" && $t != "POST") + return "// Invalid type: $t.. \n\n"; + + ob_start(); + ?> + + // remote scripting library + // (c) copyright 2005 modernmethod, inc + var sajax_debug_mode = ; + var sajax_request_type = ""; + var sajax_target_id = ""; + + function sajax_debug(text) { + if (sajax_debug_mode) + alert("RSD: " + text) + } + function sajax_init_object() { + sajax_debug("sajax_init_object() called..") + + var A; + try { + A=new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + try { + A=new ActiveXObject("Microsoft.XMLHTTP"); + } catch (oc) { + A=null; + } + } + if(!A && typeof XMLHttpRequest != "undefined") + A = new XMLHttpRequest(); + if (!A) + sajax_debug("Could not create connection object."); + return A; + } + function sajax_do_call(func_name, args) { + var i, x, n; + var uri; + var post_data; + var target_id; + + sajax_debug("in sajax_do_call().." + sajax_request_type + "/" + sajax_target_id); + target_id = sajax_target_id; + if (sajax_request_type == "") + sajax_request_type = "GET"; + + uri = ""; + if (sajax_request_type == "GET") { + + if (uri.indexOf("?") == -1) + uri += "?rs=" + escape(func_name); + else + uri += "&rs=" + escape(func_name); + uri += "&rst=" + escape(sajax_target_id); + uri += "&rsrnd=" + new Date().getTime(); + + for (i = 0; i < args.length-1; i++) + uri += "&rsargs[]=" + escape(args[i]); + + post_data = null; + } + else if (sajax_request_type == "POST") { + post_data = "rs=" + escape(func_name); + post_data += "&rst=" + escape(sajax_target_id); + post_data += "&rsrnd=" + new Date().getTime(); + + for (i = 0; i < args.length-1; i++) + post_data = post_data + "&rsargs[]=" + escape(args[i]); + } + else { + alert("Illegal request type: " + sajax_request_type); + } + + x = sajax_init_object(); + x.open(sajax_request_type, uri, true); + + if (sajax_request_type == "POST") { + x.setRequestHeader("Method", "POST " + uri + " HTTP/1.1"); + x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); + } + + x.onreadystatechange = function() { + if (x.readyState != 4) + return; + + sajax_debug("received " + x.responseText); + + var status; + var data; + status = x.responseText.charAt(0); + data = x.responseText.substring(2); + if (status == "-") + alert("Error: " + data); + else { + if (target_id != "") + document.getElementById(target_id).innerHTML = eval(data); + else + args[args.length-1](eval(data)); + } + } + sajax_debug(func_name + " uri = " + uri + "/post = " + post_data); + x.send(post_data); + sajax_debug(func_name + " waiting.."); + delete x; + return true; + } + + + + // wrapper for + + function x_() { + sajax_do_call("", + x_.arguments); + } + + Property changes on: mythweb/modules/music/mp3act_sajax.php ___________________________________________________________________ Name: svn:executable + * Index: mythweb/modules/music/mp3act_js.js.php =================================================================== --- mythweb/modules/music/mp3act_js.js.php (revision 0) +++ mythweb/modules/music/mp3act_js.js.php (revision 0) @@ -0,0 +1,316 @@ + + window.onload=function(){ init(); }; + + function init(){ + setPageTitle(); + x_viewPlaylist(viewPlaylist_cb); + x_playlistInfo(plinfo_cb); + setPLTitle(); + setCurrentPage(); + updateBox(page,0); + } + function empty_cb(new_data){ + + } + + function setPageNav(){ + //document.getElementById("breadcrumb").innerHTML = prevpage; + } + + function switchPage(newpage){ + prevpage = page; + page = newpage; + + updateBox(page,0); + setPageTitle(); + setCurrentPage(); + //setPageNav(); + } + + function setPLTitle(){ + document.getElementById("pl_title").innerHTML = " echo t("Playlist"); ?> "; + } + + function viewPlaylist_cb(new_data){ + document.getElementById("playlist").innerHTML = new_data; + } + + function setCurrentPage(){ + var x = document.getElementById('nav'); + var y = x.getElementsByTagName('a'); + for (var i=0;i";
+ $output .= "".t("By Artist Beginning With")."
".letters()."
".t("By Genre")."
\n";
+ $output .= genreForm()."
\n";
+ $output .= "\n";
+ $output .= "
+ ".t("Artist Listing")."
++ ".t("Album Listing")."
+$row[numplays] Plays
$row[length]
+ ".t("Songs")."
+$row[numplays] Plays
$row[length]
\n"; + $output .= "".t("Songs")."
\n"; + $output .= "$row[numplays] Plays
$row[length]
\n"; + $output .= "".t("Album's with songs from")." $artist
\n"; + $output .= "".t("Playlist Info")."
$row[songcount] ".t("Songs")."
$row[time2]
".t("Playlist Songs")."
\n"; + $output .= "$row[numplays] ".t("Plays")."
$row[length]
\n";
+ $output .= "".t("Recently Added Albums")."
";
+ $output .= "".t("Recently Played Songs")."
";
+ $output .= "".t("Top Played Songs")."
";
+
+
+ $output .= "
".t("Songs").": ". mysql_num_rows($result)."
\n";
+ $result = mysql_query("SELECT album_id from music_albums;");
+ $output .= "".t("Albums").": ". mysql_num_rows($result)."
\n";
+ $result = mysql_query("SELECT artist_id from music_artists;");
+ $output .= "".t("Artists").": ". mysql_num_rows($result)."
\n";
+ $result = mysql_query("SELECT genre_id from music_genres;");
+ $output .= "".t("Genres").": ". mysql_num_rows($result)."
\n";
+ $output .= "".t("Songs Played").": $row3[songs]
Album: $row[album_name]
Track: $row[track]
$row[length]
Album: $row[album_name]
Track: $row[track]
$row[time]
Album: $row[album_name]
Track: $row[track]
$row[length]
Album: $row[album_name]
Track: $row[track]
$row[length]