From 4deb544fbe1d679d880e06eb6679892cb8477bfd Mon Sep 17 00:00:00 2001 From: dongsheng Date: Mon, 29 Jun 2009 14:03:23 +0000 Subject: [PATCH] "MDL-19654, implement draft files browsing and management" --- lang/en_utf8/repository_draft.php | 3 + repository/draft/db/install.php | 12 ++++ repository/draft/db/upgrade.php | 20 ++++++ repository/draft/icon.png | Bin 0 -> 582 bytes repository/draft/repository.class.php | 90 ++++++++++++++++++++++++++ repository/draft/version.php | 2 + repository/repository.src.js | 28 ++++++++ 7 files changed, 155 insertions(+) create mode 100644 lang/en_utf8/repository_draft.php create mode 100755 repository/draft/db/install.php create mode 100755 repository/draft/db/upgrade.php create mode 100755 repository/draft/icon.png create mode 100755 repository/draft/repository.class.php create mode 100755 repository/draft/version.php diff --git a/lang/en_utf8/repository_draft.php b/lang/en_utf8/repository_draft.php new file mode 100644 index 00000000000..1e3779a81ba --- /dev/null +++ b/lang/en_utf8/repository_draft.php @@ -0,0 +1,3 @@ +dirroot.'/repository/lib.php'); + $draft_plugin = new repository_type('draft', array(), true); + if(!$id = $draft_plugin->create(true)) { + $result = false; + } + return $result; +} diff --git a/repository/draft/db/upgrade.php b/repository/draft/db/upgrade.php new file mode 100755 index 00000000000..4fa6b60bb92 --- /dev/null +++ b/repository/draft/db/upgrade.php @@ -0,0 +1,20 @@ +get_manager(); + $result = true; + +/// And upgrade begins here. For each one, you'll need one +/// block of code similar to the next one. Please, delete +/// this comment lines once this file start handling proper +/// upgrade code. + +/// if ($result && $oldversion < YYYYMMDD00) { //New version in version.php +/// $result = result of database_manager methods +/// } + + return $result; +} diff --git a/repository/draft/icon.png b/repository/draft/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..5131cf3de1da9a246a7ea410df97a56454f75901 GIT binary patch literal 582 zcmV-M0=fN(P)sc!?Oa|W?(3ZQitt8@U9a!$t!d={vG7L$Qdv3nt_fEurUGPi#$jEje}jwZZ~A-j((jg^X( zl8wZYFT;>M>zM`7ol4uBKkA+h=AI_*pa|xkFQ==ts;sB`qXGV)3jd!L-lt0cqYP)Ps~P{Q8U3pp{Hz)Ktr`EVA^xr<`m!SbvKarcBf7o9 z|F}c{zD51NNdLZ0_rg&6!b|VJfB(Qz{=!oA#bN%!VEx2h{l{DX$5!ITuKvhg|JjBA z=)jY8&gcLD00DGTPE!Ct=GbNc0004EOGiWihy@);0001~Nkl$KDDbS|FmcAAr?t&acy0W$yqz~S6bU0DR+w!S1?U9<-vDvl~^OABWG{l0ud*r=$g zDNKzl-<@qQ&L9};Y$$KuI$oWcUR#+Ucsgol{j!za^EQI7ok^Zgd-=HOCivVRget_listing(); + } + + /** + * + * @param string $path + * @param string $path not used by this plugin + * @return mixed + */ + public function get_listing($path = '', $page = '') { + global $CFG, $USER, $itemid; + $ret = array(); + $ret['dynload'] = true; + $ret['nosearch'] = true; + $ret['nologin'] = true; + $ret['draftfiles'] = true; + $list = array(); + + $fs = get_file_storage(); + $context = get_context_instance(CONTEXT_USER, $USER->id); + $files = $fs->get_area_files($context->id, 'user_draft', $itemid); + foreach ($files as $file) { + if ($file->get_filename()!='.') { + $node = array( + 'title' => $file->get_filename(), + 'size' => 0, + 'date' => '', + 'source'=> $file->get_id(), + 'thumbnail' => $CFG->pixpath .'/f/text-32.png' + ); + $list[] = $node; + } + } + $ret['list'] = $list; + return $ret; + } + + /** + * Return draft files information + * + * @global object $USER + * @param string $fid file id + * @param string $title + * @param string $itemid + * @return string the location of the file + */ + public function get_file($fid, $title = '', $itemid = '') { + global $USER; + $ret = array(); + $browser = get_file_browser(); + $user_context = get_context_instance(CONTEXT_USER, $USER->id); + $ret['itemid'] = $itemid; + $ret['title'] = $title; + $ret['contextid'] = $user_context->id; + return $ret; + } + + /** + * + * @return string repository name + */ + public function get_name(){ + return get_string('repositoryname', 'repository_draft');; + } +} +?> diff --git a/repository/draft/version.php b/repository/draft/version.php new file mode 100755 index 00000000000..0b633c373f5 --- /dev/null +++ b/repository/draft/version.php @@ -0,0 +1,2 @@ +version = 2009062000; diff --git a/repository/repository.src.js b/repository/repository.src.js index d3ac9c86856..b15a3957056 100644 --- a/repository/repository.src.js +++ b/repository/repository.src.js @@ -249,6 +249,7 @@ repository_client.req = function(client_id, id, path, page) { params['ctx_id']=fp_config.contextid; params['client_id'] = client_id; params['repo_id']=id; + params['itemid'] = repository_client.fp[client_id].itemid; if (!!page) { // convert page to boolean value params['page']=page; } @@ -781,6 +782,33 @@ repository_client.view_as_icons = function(client_id, data) { link.appendChild(img); frame.appendChild(link); el.appendChild(frame); + if (fp.fs.draftfiles && !list[k].children) { + var delbtn = document.createElement('A'); + delbtn.href = '###'; + delbtn.innerHTML = "[X]"; + delbtn.id = 'del-id-'+String(count); + el.appendChild(delbtn); + delbtn.itemid=fp.itemid; + delbtn.client_id=client_id; + delbtn.title=list[k].title; + delbtn.repo_id=fp.fs.repo_id; + delbtn.onclick = function() { + if (confirm('Sure?')) { + var params = []; + params['client_id'] = this.client_id; + params['itemid'] = this.itemid; + params['title'] = this.title; + var trans = YAHOO.util.Connect.asyncRequest('POST', + moodle_cfg.wwwroot+'/repository/ws.php?action=delete', + this, + repository_client.postdata(params) + ); + } + } + delbtn.success = function(o) { + repository_client.req(o.responseText, this.repo_id); + } + } el.appendChild(title); panel.appendChild(el); if(list[k].children) {