From da2946c98433910995fb1a009146075df48b4436 Mon Sep 17 00:00:00 2001 From: dongsheng Date: Mon, 18 May 2009 03:51:09 +0000 Subject: [PATCH] "MDL-19180, repository url plugin, download file into moodle by inputing url directly" --- lang/en_utf8/repository_url.php | 5 ++ repository/flickr_public/repository.class.php | 2 +- repository/lib.php | 4 +- repository/repository.src.js | 12 ++- repository/url/icon.png | Bin 0 -> 1854 bytes repository/url/repository.class.php | 85 ++++++++++++++++++ repository/url/version.php | 2 + repository/ws.php | 2 +- repository/youtube/repository.class.php | 2 +- 9 files changed, 105 insertions(+), 9 deletions(-) create mode 100644 lang/en_utf8/repository_url.php create mode 100755 repository/url/icon.png create mode 100755 repository/url/repository.class.php create mode 100644 repository/url/version.php diff --git a/lang/en_utf8/repository_url.php b/lang/en_utf8/repository_url.php new file mode 100644 index 0000000000..f9023da5b6 --- /dev/null +++ b/lang/en_utf8/repository_url.php @@ -0,0 +1,5 @@ + -repository_listing['$id'] = {}; +repository_listing['$id'] = []; EOD; foreach ($repos as $repo) { $info = $repo->ajax_info(); $js .= "\r\n"; - $js .= 'repository_listing[\''.$id.'\'][\''.$info->id.'\']='.json_encode($repo->ajax_info()).';'; + $js .= 'repository_listing[\''.$id.'\']['.$info->id.']='.json_encode($repo->ajax_info()).';'; $js .= "\n"; } $js .= "\r\n"; diff --git a/repository/repository.src.js b/repository/repository.src.js index 160e2f0695..bd5e7c87c9 100644 --- a/repository/repository.src.js +++ b/repository/repository.src.js @@ -314,8 +314,8 @@ repository_client.print_login = function(id, data) { var login = data.login; var panel = new YAHOO.util.Element('panel-'+id); var action = 'login'; - if (data['login_search_form']) { - action='search'; + if (data['login_btn_action']) { + action=data['login_btn_action']; } var str = '
'; var has_pop = false; @@ -354,15 +354,17 @@ repository_client.print_login = function(id, data) { } str += ''; }else{ - str += ''; + str += ''; } } str +=''; } str +=''; var btn_label = data['login_btn_label']?data['login_btn_label']:fp_lang.submit; - if (data['login_search_form']) { + if (data['login_btn_action'] == 'search') { str += '

'; + } else if(data['login_btn_action'] == 'download') { + str += '

'; } else { if(!has_pop) { str += '

'; @@ -403,6 +405,8 @@ repository_client.login_keypress = function(evt,action) { if(key == 13 || key == 10){ if(action=='search'){ repository_client.search(cached_id, cached_repo_id); + } else if (action=='download') { + repository_client.download(cached_id, cached_repo_id); } else { repository_client.login(cached_id, cached_repo_id); } diff --git a/repository/url/icon.png b/repository/url/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..33c3817ab49ead37108e21bf4aba2fc3650bbeb8 GIT binary patch literal 1854 zcmV-E2f_G>P)Izpu<=@Wtj1Y&WN4y2V zXS8$BrI*JC4!r$e15nj@)TOG)7aVrW#`X1XM|F9zyuxWiI-P;fAJX0(9*+k?(Tf?R z9`>F5_T(J}P`T~dDwC|A^){@IG&j~3OR`jLQWYpNNMy*e1c@|NN63GlSU5DMG!vA3ezdZR) zKuf09PrUy0^v4CD>}Z(|L_A}@z}ZkZb~rRM_v-lMHQUIQ>6&}oWhT|6 z2oTYD3a%nM3LRG4d%n=!;jurwd|M1u^&Pb-(Zm@=ks4CEw*7&h#6X#=2(oI&v17-?z8q1G zA3y%^nKNhJr6ZoZDFCALYIE%evriZ{8fj*N(ovh&EM~=^9E%rZNHm-v|pO z=3G39wYz?N!`{z-t`1N3Z36+=N5doR$Fcwdr=R|pc}4G+wmkTti>OD_+A@4+Z!4aE zZ3yixpMuS5raB;j;Qno*MlfOT48D(P|22H|3yml$DnfmIeI0>r zKXKy3>16>dw7p$jU5G}bpxB|a$&ElThLdmo0}tF^k3e`Hv3Q!?(1jtUIhIJ{)jwVq zy|=Cm>0}(k{~X6pzupcllg8ZK9JX%Vic6O+eTB|Hz3eUM?d`q0w6wInva(Vrsj4cZ ze@7$ktt-J_{x*WrVjD7KG#pL9|Ir-Yo0`GowWt`^RusWXF8%q!2%dSOP1Fd^q51iF z)Ya9YprD{<=gysF%K{*Z_U+oWOQMW5#ze2inT)4)H=(@9LLe@~RcJ++>OdrxL`J(F z(u$G-)O^B;({KG9-`MRH-^>o5!9BCNWy=;b-K_p40c_s9S*6X7d%a#kKYPxKY&@M# zBa=?yyZy~DBZVvDlelkfIn1W(h1BUV<33Lr-XP=M8&{*rQ!4a~+ruodQ%y}xJluci z&>?vd0GG?Py|uNqf)FAej|(L>oJ=N>NF;=CJP+^NfJk@-Q~r<8Od#x56E-zg;q8lK zs4B7Gp-ro^`&pOIU}yNdu&@vf4GlGegM%H50Fd`z?(FPDBoYy0R%8#1Lv)et8cd3g z@ArE#dgUsD;RtrzUxTstrv<1dy6eP#rkjQJ*b!!fb(w{>wl>fW+kXQ9N{otB40UQN};j=Yb;W!YCW#X0=*H4zN=^ z$IRB&*23v@cK7x5Rb~MYMUVIN^r(!G6%66*WltOq2kdq`%x1Hg=NeH_;=qAN8p!wr z4t%kmZihpx^FF4Uh1p<-Wbqq928Wj&XlZFt3DDkb9iT&ZbMi5Oii!$^!(q(M&I)7f zk@3xj`Cy|gZ*aNrs~@gHflU<#*h?0XFVq`4yvD_dSccE%6Ulh$)Tu}5m>(F0=#zXf z8=9J$63VP3UPwjB8svE+AB-`*LxQDT<}4PA=#3`c5DF=?!8$8fuH^on+)8L+x;R@6 z#oPzT=nYWIt>>;8lDlT)hTrecerHQDdp0^cy66DjnD@FZIrpFL6-A4}yyzMlh`60U ze;z|aLl_$y6EO<}0wOP%LXNLdWQ;1u5)1~xw}|&~9}0y~U0p54Znrzz=i8E(qST1{ za&0Nv^VgOO$HI@4n=`;klpF7x0m(l+e{HFjYfH^X#Y*eetrKITgc_7{&$Q>(`CEa> zpEIsDDs>_Y9svdpsUd`S=;;+~Eqy6_M+~!c`yP zVkrPn0s7{VBS)Si+N=f`(FH*GH&~use@5vmZU6uP07*qoM6N<$g78P3ssI20 literal 0 HcmV?d00001 diff --git a/repository/url/repository.class.php b/repository/url/repository.class.php new file mode 100755 index 0000000000..7df80e0728 --- /dev/null +++ b/repository/url/repository.class.php @@ -0,0 +1,85 @@ +client_id = $options['client_id']; + $this->file_url = optional_param('download_from', '', PARAM_RAW); + } + + public function get_file($url, $file = '') { + global $CFG; + $path = $this->prepare_file($file); + $fp = fopen($path, 'w'); + $c = new curl; + $c->download(array(array('url'=>$url, 'file'=>$fp))); + + return $path; + } + + public function check_login() { + global $action; + if (!empty($this->file_url)) { + return true; + } else { + return false; + } + } + /** + * + * @global object $SESSION + * @param boolean $ajax + * @return mixed + */ + public function print_login($ajax = true) { + $url = new stdclass; + $url->label = get_string('url', 'repository_url').': '; + $url->id = 'fileurl-'.$this->client_id; + $url->type = 'text'; + $url->name = 'fileiii'; + + $title = new stdclass; + $title->label = get_string('rename', 'repository_url').': '; + $title->id = 'newname-'.$this->client_id; + $title->type = 'text'; + $title->name = 'file'; + + $ret['login'] = array($url, $title); + $ret['login_btn_label'] = get_string('download', 'repository_url'); + $ret['login_btn_action'] = 'download'; + return $ret; + } + + /** + * + * @param mixed $path + * @param string $search + * @return array + */ + public function get_listing($path='', $page='') { + $this->print_login(); + } + + public function get_name(){ + return get_string('repositoryname', 'repository_url');; + } +} +?> diff --git a/repository/url/version.php b/repository/url/version.php new file mode 100644 index 0000000000..b5721016d8 --- /dev/null +++ b/repository/url/version.php @@ -0,0 +1,2 @@ +version = 2009051800; diff --git a/repository/ws.php b/repository/ws.php index e64a8c536f..d99e13d4b2 100644 --- a/repository/ws.php +++ b/repository/ws.php @@ -99,7 +99,7 @@ require_once($CFG->dirroot.'/repository/'.$type.'/repository.class.php'); $classname = 'repository_' . $type; try { - $repo = new $classname($repo_id, $ctx_id, array('ajax'=>true, 'name'=>$repository->name)); + $repo = new $classname($repo_id, $ctx_id, array('ajax'=>true, 'name'=>$repository->name, 'client_id'=>$client_id)); } catch (repository_exception $e){ $err->e = $e->getMessage(); die(json_encode($err)); diff --git a/repository/youtube/repository.class.php b/repository/youtube/repository.class.php index 44d6705481..c69275086a 100644 --- a/repository/youtube/repository.class.php +++ b/repository/youtube/repository.class.php @@ -78,7 +78,7 @@ class repository_youtube extends repository { $search->label = get_string('search', 'repository_youtube').': '; $ret['login'] = array($search); $ret['login_btn_label'] = get_string('search'); - $ret['login_search_form'] = true; + $ret['login_btn_action'] = 'search'; return $ret; } public function supported_return_value() { -- 2.39.5