Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
MDL-13766
1. Move curl and repository_cache class to filelib.php
2. Name the file before downloading it
3. clean up code
  • Loading branch information
dongsheng committed Jul 18, 2008
1 parent eec1d20 commit bb2c046
Show file tree
Hide file tree
Showing 9 changed files with 601 additions and 604 deletions.
489 changes: 485 additions & 4 deletions lib/filelib.php

Large diffs are not rendered by default.

112 changes: 62 additions & 50 deletions repository/ajax.php
@@ -1,3 +1,6 @@
<html>
<head>
<title> Ajax picker demo page </title>
<?php
/*******************************************************\
Expand All @@ -9,10 +12,18 @@
require_once('lib.php');
$itempic = $CFG->pixpath.'/i/item.gif';
$meta = <<<EOD
<link rel="stylesheet" type="text/css" href="../lib/yui/reset-fonts-grids/reset-fonts-grids.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/reset/reset-min.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/resize/assets/skins/sam/resize.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/container/assets/skins/sam/container.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/layout/assets/skins/sam/layout.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/button/assets/skins/sam/button.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/menu/assets/skins/sam/menu.css" />
<style type="text/css">
body {
margin:0;
padding:0;
background: #FFF7C6;
}
#demo .yui-resize-handle-br {
height: 11px;
Expand All @@ -24,7 +35,7 @@
#list{line-height: 1.5em}
#list li{
background: url($itempic) no-repeat 0 2px;
padding-left: 24px
padding-left: 16px
}
#list a{
padding: 3px
Expand All @@ -35,18 +46,11 @@
}
.t{width:80px; float:left;text-align:center;}
.t div{width: 80px; height: 36px; overflow: hidden}
.repo-logout{font-size: 10px;}
.repo-opt{font-size: 10px;color:red}
img{margin:0;padding:0;border:0}
#paging{margin:10px 5px; clear:both}
#paging a{padding: 4px; border: 1px solid gray}
</style>
<link rel="stylesheet" type="text/css" href="../lib/yui/reset-fonts-grids/reset-fonts-grids.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/reset/reset-min.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/resize/assets/skins/sam/resize.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/container/assets/skins/sam/container.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/layout/assets/skins/sam/layout.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/button/assets/skins/sam/button.css" />
<link rel="stylesheet" type="text/css" href="../lib/yui/menu/assets/skins/sam/menu.css" />
<script type="text/javascript" src="../lib/yui/yahoo/yahoo-min.js"></script>
<script type="text/javascript" src="../lib/yui/event/event-min.js"></script>
<script type="text/javascript" src="../lib/yui/dom/dom-min.js"></script>
Expand All @@ -62,14 +66,16 @@
<script type="text/javascript" src="../lib/yui/button/button-min.js"></script>
<script type="text/javascript" src="../lib/yui/selector/selector-beta-min.js"></script>
EOD;
print_header('', '', '', '', $meta, false);
echo $meta;
?>
<div id='control' style="margin: 5em">
</head>
<body class=" yui-skin-sam">
<div id='control'>
<input type="button" id="con1" onclick='openpicker()' value="Open File Picker" /> <br/>
<textarea rows=12 cols=50 id="result">
</textarea>
</div>
<div class=" yui-skin-sam">
<div>
<div id="file-picker"></div>
</div>

Expand Down Expand Up @@ -116,13 +122,6 @@ function openpicker(){
units: [
{position: 'top', height: 32, resize: false, body:'<div class="yui-buttongroup" id="viewbar"></div>', gutter: '2'},
{ position: 'left', width: 150, resize: true, body: '<ul id="list"></ul>', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 },
{ position: 'bottom',
height: 30,
body: '<div id="toolbar">'+
'<input type="button" id="select" value="Select" />'+
'<input type="button" id="search" value="Search" />'+
'</div>',
gutter: '2'},
{ position: 'center', body: '<div id="panel"></div>', scroll: true, gutter: '0 2 0 0' }
]
});
Expand Down Expand Up @@ -157,10 +156,11 @@ function openpicker(){
list.on('contentReady', function(e){
for(var i=0; i<repos.length; i++) {
var repo = repos[i];
var li = document.createElement('li');
li = document.createElement('li');
li.innerHTML = '<a href="###" id="repo-call-'+repo.id+'">'+
repo.repositoryname+'</a> ';
li.innerHTML += '<a href="###" class="repo-logout" id="repo-logout-'+repo.id+'">Logout</a>';
repo.repositoryname+'</a><br/>';
li.innerHTML += '<a href="###" class="repo-opt" onclick=\'dosearch('+repo.id+')\'>search</a>';
li.innerHTML += '<a href="###" class="repo-opt" id="repo-logout-'+repo.id+'">Logout </a>';
li.id = 'repo-'+repo.id;
this.appendChild(li);
var e = new YAHOO.util.Element('repo-call-'+repo.id);
Expand Down Expand Up @@ -188,27 +188,6 @@ function openpicker(){
var btn_thumb = {label: 'Thumbnail', value: 't', onclick: {fn: viewthumb}};
viewbar.addButtons([btn_list, btn_thumb]);
var select = new YAHOO.util.Element('select');
select.on('click', function(e){
var nodes = YAHOO.util.Selector.query('input:checked');
var str = '';
var files = [];
for(k in nodes){
files.push(nodes[k].value);
}
loading();
var trans = YAHOO.util.Connect.asyncRequest('POST', 'ws.php?id='+repositoryid+'&action=download', loadfile, postdata({'files':files}));
})
var search = new YAHOO.util.Element('search');
search.on('click', function(e) {
if(repositoryid==0){
alert('Select a repository first.');
return;
}
var data = window.prompt("What are you searching for?");
if(data != null && data != '') {
dosearch(data);
}
})
};

function postdata(obj) {
Expand Down Expand Up @@ -248,6 +227,24 @@ function loading(){
panel.get('element').innerHTML = '<img src="<?php echo $CFG->pixpath.'/i/loading.gif'?>" alt="loading..." />';
}

// name the file
function rename(oldname, url){
var panel = new YAHOO.util.Element('panel');
var html = '<div>';
html += '<label for="newname">Name:</label>';
html += '<input type="text" id="newname" value="'+oldname+'" /><br/>';
html += '<input type="hidden" id="fileurl" value="'+url+'" />';
html += '<input type="button" onclick="download()" value="Download" />';
html += '<a href="###" onclick="viewfiles()">Back</a>';
html += '</div>';
panel.get('element').innerHTML = html;
}
function download(){
var title = document.getElementById('newname').value;
var file = document.getElementById('fileurl').value;
loading();
var trans = YAHOO.util.Connect.asyncRequest('POST', 'ws.php?id='+repositoryid+'&action=download', loadfile, postdata({'file':file, 'title':title}));
}
// produce thumbnail view
function viewthumb(){
viewbar.check(1);
Expand All @@ -261,7 +258,8 @@ function viewthumb(){
for(k in obj){
str += '<div class="t">';
str += '<img title="'+obj[k].title+'" src="'+obj[k].thumbnail+'" />';
str += '<div style="text-align:center"><input type="radio" name="selected-files" value="'+obj[k].source+'"/><br/>'
str += '<div style="text-align:center">';
str += ('<input type="radio" title="'+obj[k].title+'" name="selected-files" value="'+obj[k].source+'" onclick=\'rename("'+obj[k].title+'", "'+obj[k].source+'")\' />');
str += obj[k].title+'</div>';
str += '</div>';
}
Expand All @@ -270,6 +268,13 @@ function viewthumb(){
return str;
}

function viewfiles(){
if(viewmode) {
viewthumb();
} else {
viewlist();
}
}
// produce list view
function viewlist(){
var str = '';
Expand All @@ -281,7 +286,7 @@ function viewlist(){
var panel = new YAHOO.util.Element('panel');
str += makepage();
for(k in obj){
str += '<input type="radio" name="selected-files" value="'+obj[k].source+'" />';
str += ('<input type="radio" title="'+obj[k].title+'" name="selected-files" value="'+obj[k].source+'" onclick=\'rename("'+obj[k].title+'", "'+obj[k].source+'")\' />');
str += obj[k].title;
str += '<br/>';
}
Expand Down Expand Up @@ -324,7 +329,9 @@ function print_login(){
alert('Invalid JSON String\n'+o.responseText);
}
var panel = new YAHOO.util.Element('panel');
panel.get('element').innerHTML = '<h1>Download Successfully!</h1>';
var html = '<h1>Download Successfully!</h1>';
html += '<a href="###" onclick="viewfiles()">Back</a>';
panel.get('element').innerHTML = html;
}
}

Expand All @@ -336,10 +343,15 @@ function cr(id, path, reset){
loading();
var trans = YAHOO.util.Connect.asyncRequest('GET', 'ws.php?id='+id+'&p='+path+'&reset='+reset, callback);
}
function dosearch(text){
function dosearch(id){
var data = window.prompt("What are you searching for?");
if(data == null && data == '') {
alert('nothing entered');
return;
}
viewbar.set('disabled', false);
loading();
var trans = YAHOO.util.Connect.asyncRequest('GET', 'ws.php?id='+repositoryid+'&s='+text, callback);
var trans = YAHOO.util.Connect.asyncRequest('GET', 'ws.php?id='+id+'&s='+data, callback);
}

function dologin(){
Expand All @@ -348,5 +360,5 @@ function dologin(){
var trans = YAHOO.util.Connect.asyncRequest('POST', 'ws.php', callback);
}
</script>
<?php
print_footer('empty');
</body>
</html>
8 changes: 3 additions & 5 deletions repository/boxnet/boxlibphp5.php
Expand Up @@ -17,8 +17,6 @@
*
*/

require_once($CFG->dirroot.'/repository/'.'curl.class.php');

class boxclient {
public $auth_token = '';

Expand Down Expand Up @@ -80,13 +78,13 @@ function getTicket($params = array()) {
// 'username'=>'dongsheng@moodle.com',
// 'password'=>'xxx'));
//
function getAuthToken($ticket, $options = array()) {
function getAuthToken($ticket, $username, $password) {
$c = new curl;
$c->setopt(array('CURLOPT_FOLLOWLOCATION'=>0));
$param = array(
'login_form1'=>'',
'login'=>$options['username'],
'password'=>$options['password'],
'login'=>$username,
'password'=>$password,
'dologin'=>1,
'__login'=>1
);
Expand Down
45 changes: 15 additions & 30 deletions repository/boxnet/repository.class.php
Expand Up @@ -7,14 +7,11 @@
* @version 0.1 dev
* @license http://www.gnu.org/copyleft/gpl.html GNU Public License
*/
require_once($CFG->dirroot.'/repository/'.'lib.php');
require_once($CFG->dirroot.'/repository/'.'curl.class.php');

require_once($CFG->dirroot.'/repository/boxnet/'.'boxlibphp5.php');

class repository_boxnet extends repository{

var $box;
var $ticket;
private $box;

public function __construct($repositoryid, $context = SITEID, $options = array()){
global $SESSION, $action;
Expand All @@ -32,31 +29,21 @@ public function __construct($repositoryid, $context = SITEID, $options = array()
&& !empty($options['password'])
&& !empty($options['ticket']) )
{
$c = new curl;
$c->setopt(array('CURLOPT_FOLLOWLOCATION'=>0));
$param = array(
'login_form1'=>'',
'login'=>$options['username'],
'password'=>$options['password'],
'dologin'=>1,
'__login'=>1
);
$ret = $c->post('http://www.box.net/api/1.0/auth/'.$options['ticket'], $param);
$header = $c->getResponse();
$location = $header['location'];
preg_match('#auth_token=(.*)$#i', $location, $matches);
$auth_token = $matches[1];
$SESSION->box_token = $auth_token;
$this->box = new boxclient($options['api_key']);
$SESSION->box_token = $this->box->getAuthToken($options['ticket'],
$options['username'], $options['password']);
}
// already logged
if(!empty($SESSION->box_token)) {
$this->box = new boxclient($options['api_key'], $SESSION->box_token);
if(empty($this->box)) {
$this->box = new boxclient($options['api_key'], $SESSION->box_token);
}
$options['auth_token'] = $SESSION->box_token;
if(empty($action)) {
$action = 'list';
}
} else {
$this->box = new boxclient($options['api_key'], '');
$this->box = new boxclient($options['api_key']);
if(!empty($action)) {
$action = '';
}
Expand Down Expand Up @@ -109,19 +96,18 @@ public function print_login(){
// print list
}
} else {
// get a ticket from box.net
$ticket_return = $this->box->getTicket();
$this->ticket = $ticket_return['ticket'];
$t = $this->box->getTicket();
if(empty($this->options['auth_token'])) {
$str = '';
$str .= '<form id="moodle-repo-login">';
$str .= '<input type="hidden" name="ticket" value="'.$this->ticket.'" />';
$str .= '<input type="hidden" name="ticket" value="'.
$t['ticket'].'" />';
$str .= '<input type="hidden" name="id" value="'.$this->repositoryid.'" />';
$str .= '<label for="box_username">Username: <label>';
$str .= '<label for="box_username">Username: <label><br/>';
$str .= '<input type="text" id="box_username" name="username" />';
$str .= '<br/>';
$str .= '<label for="box_password">Password: <label>';
$str .= '<input type="password" id="box_password" name="password" />';
$str .= '<label for="box_password">Password: <label><br/>';
$str .= '<input type="password" id="box_password" name="password" /><br/>';
$str .= '<input type="button" onclick="dologin()" value="Go" />';
$str .= '</form>';
if($this->options['ajax']){
Expand All @@ -136,7 +122,6 @@ public function print_login(){
}

public function print_search(){
echo '<input type="text" disabled="true" name="Search" value="search terms..." size="40" class="right"/>';
return false;
}
}
Expand Down

0 comments on commit bb2c046

Please sign in to comment.