]> git.mjollnir.org Git - moodle.git/commitdiff
"MDL-19180, repository url plugin, download file into moodle by inputing url directly"
authordongsheng <dongsheng>
Mon, 18 May 2009 03:51:09 +0000 (03:51 +0000)
committerdongsheng <dongsheng>
Mon, 18 May 2009 03:51:09 +0000 (03:51 +0000)
lang/en_utf8/repository_url.php [new file with mode: 0644]
repository/flickr_public/repository.class.php
repository/lib.php
repository/repository.src.js
repository/url/icon.png [new file with mode: 0755]
repository/url/repository.class.php [new file with mode: 0755]
repository/url/version.php [new file with mode: 0644]
repository/ws.php
repository/youtube/repository.class.php

diff --git a/lang/en_utf8/repository_url.php b/lang/en_utf8/repository_url.php
new file mode 100644 (file)
index 0000000..f9023da
--- /dev/null
@@ -0,0 +1,5 @@
+<?php // $Id$
+$string['repositoryname'] = 'URL Downloader';
+$string['url'] = 'URL';
+$string['rename'] = 'Name';
+$string['download'] = 'Download';
index ecc07e62ee2d46bfe305f464b62fbdc81381bca4..0fad3206e7f9cce9184be287020dafdc03d4421b 100644 (file)
@@ -151,7 +151,7 @@ class repository_flickr_public extends repository {
 
             $ret['login'] = array($fulltext, $tag, $email_field, $license);
             $ret['login_btn_label'] = get_string('search');
-            $ret['login_search_form'] = true;
+            $ret['login_btn_action'] = 'search';
             return $ret;
         }
     }
index 39f6b92bee20ecf20d3e3a1c0792fb8dc2129af7..f425866ad3f90fd1b099033b599d266c0c65077a 100644 (file)
@@ -1960,12 +1960,12 @@ EOD;
     // print repository instances listing
     $js .= <<<EOD
 <script type="text/javascript">
-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";
index 160e2f06952d5ee16b77b9713ed47017dfb23276..bd5e7c87c91541a731d4367a31af58739f8ace8b 100644 (file)
@@ -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 = '<div class="fp-login-form" onkeypress="repository_client.login_keypress(event,\''+action+'\')">';
     var has_pop = false;
@@ -354,15 +354,17 @@ repository_client.print_login = function(id, data) {
                 }
                 str += '</td>';
             }else{
-                str += '<td align="left"><input type="'+login[k].type+'"'+' name="'+login[k].name+'"'+field_value+' /></td>';
+                str += '<td align="left"><input type="'+login[k].type+'"'+' name="'+login[k].name+'"'+field_value+' '+field_id+' /></td>';
             }
         }
         str +='</tr>';
     }
     str +='</table>';
     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 += '<p><input type="button" onclick="repository_client.search(\''+id+'\', \''+data.repo_id+'\')" value="'+btn_label+'" /></p>';
+    } else if(data['login_btn_action'] == 'download') {
+        str += '<p><input type="button" onclick="repository_client.download(\''+id+'\', \''+data.repo_id+'\')" value="'+btn_label+'" /></p>';
     } else {
         if(!has_pop) {
             str += '<p><input type="button" onclick="repository_client.login(\''+id+'\', \''+data.repo_id+'\')" value="'+btn_label+'" /></p>';
@@ -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 (executable)
index 0000000..33c3817
Binary files /dev/null and b/repository/url/icon.png differ
diff --git a/repository/url/repository.class.php b/repository/url/repository.class.php
new file mode 100755 (executable)
index 0000000..7df80e0
--- /dev/null
@@ -0,0 +1,85 @@
+<?php
+/**
+ * repository_url class
+ * A subclass of repository, which is used to download a file from a specific url
+ *
+ * @version $Id$
+ * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
+ */
+
+class repository_url extends repository {
+
+    /**
+     *
+     * @global object $SESSION
+     * @global string $action
+     * @global object $CFG
+     * @param int $repositoryid
+     * @param object $context
+     * @param array $options
+     */
+    public function __construct($repositoryid, $context = SITEID, $options = array()){
+        global $SESSION, $action, $CFG;
+        parent::__construct($repositoryid, $context, $options);
+        $this->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 (file)
index 0000000..b572101
--- /dev/null
@@ -0,0 +1,2 @@
+<?php
+$plugin->version = 2009051800;
index e64a8c536f330fc9ffd753cae9d7485809717134..d99e13d4b255d143ae9e856a7a36b7f286610b48 100644 (file)
@@ -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));
index 44d6705481d95f7d1d83a192c38902e89e06d70a..c69275086ae800abb45b53731aa0458fa367d37d 100644 (file)
@@ -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() {