summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <icewind1991@gmail.com>2011-06-02 02:45:35 +0200
committerRobin Appelman <icewind1991@gmail.com>2011-06-02 02:46:50 +0200
commit8c5a06028aa4bf7a29d79d63a713361ce2f50633 (patch)
tree3b94337d8bbbef5844dfe08d4478b34938655221
parent6c6871336d6570b02b030d521d18eb4d28f2a83f (diff)
downloadnextcloud-server-8c5a06028aa4bf7a29d79d63a713361ce2f50633.tar.gz
nextcloud-server-8c5a06028aa4bf7a29d79d63a713361ce2f50633.zip
port sharing by publiclink fully to the 2.0 codebase and provide a simple gui for it
-rw-r--r--apps/files_publiclink/admin.php55
-rw-r--r--apps/files_publiclink/ajax/deletelink.php11
-rw-r--r--apps/files_publiclink/ajax/makelink.php (renamed from plugins/publiclink/makelink.php)10
-rw-r--r--apps/files_publiclink/appinfo/app.php6
-rw-r--r--apps/files_publiclink/appinfo/database.xml (renamed from plugins/publiclink/db_structure.xml)0
-rw-r--r--apps/files_publiclink/appinfo/info.xml10
-rw-r--r--apps/files_publiclink/css/admin.css2
-rw-r--r--apps/files_publiclink/get.php (renamed from plugins/publiclink/get.php)6
-rw-r--r--apps/files_publiclink/js/admin.js52
-rw-r--r--apps/files_publiclink/lib_public.php (renamed from plugins/publiclink/lib_public.php)21
-rw-r--r--apps/files_publiclink/templates/admin.php28
-rw-r--r--apps/files_publiclink/templates/breadcrumb.php (renamed from plugins/publiclink/templates/breadcrumb.php)0
-rw-r--r--apps/files_publiclink/templates/files.php (renamed from plugins/publiclink/templates/files.php)0
-rw-r--r--apps/files_publiclink/templates/index.php (renamed from plugins/publiclink/templates/index.php)0
-rw-r--r--plugins/publiclink/plugin.xml17
15 files changed, 196 insertions, 22 deletions
diff --git a/apps/files_publiclink/admin.php b/apps/files_publiclink/admin.php
new file mode 100644
index 00000000000..a48076b4d42
--- /dev/null
+++ b/apps/files_publiclink/admin.php
@@ -0,0 +1,55 @@
+<?php
+
+/**
+* ownCloud - ajax frontend
+*
+* @author Robin Appelman
+* @copyright 2010 Robin Appelman icewind1991@gmail.com
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Affero General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+
+
+// Init owncloud
+require_once('../../lib/base.php');
+require_once( 'lib_public.php' );
+require( 'template.php' );
+
+
+// Check if we are a user
+if( !OC_USER::isLoggedIn() || !OC_GROUP::inGroup( $_SESSION['user_id'], 'admin' )){
+ header( "Location: ".OC_HELPER::linkTo( "index.php" ));
+ exit();
+}
+
+OC_APP::setActiveNavigationEntry( "files_publiclink_administration" );
+
+OC_UTIL::addStyle( 'files_publiclink', 'admin' );
+OC_UTIL::addScript( 'files_publiclink', 'admin' );
+
+if(isset($_SERVER['HTTPS'])) {
+ $baseUrl= "https://". $_SERVER['SERVER_NAME'] . OC_HELPER::linkTo('files_publiclink','get.php');
+}else{
+ $baseUrl= "http://". $_SERVER['SERVER_NAME'] . OC_HELPER::linkTo('files_publiclink','get.php');
+}
+
+
+// return template
+$tmpl = new OC_TEMPLATE( "files_publiclink", "admin", "admin" );
+$tmpl->assign( 'links', OC_PublicLink::getLinks());
+$tmpl->assign('baseUrl',$baseUrl);
+$tmpl->printPage();
+
+?>
diff --git a/apps/files_publiclink/ajax/deletelink.php b/apps/files_publiclink/ajax/deletelink.php
new file mode 100644
index 00000000000..e2e4ff944a6
--- /dev/null
+++ b/apps/files_publiclink/ajax/deletelink.php
@@ -0,0 +1,11 @@
+<?php
+$RUNTIME_NOAPPS=true; //no need to load the apps
+
+require_once '../../../lib/base.php';
+
+require_once '../lib_public.php';
+
+$token=$_GET['token'];
+
+OC_PublicLink::delete($token);
+?> \ No newline at end of file
diff --git a/plugins/publiclink/makelink.php b/apps/files_publiclink/ajax/makelink.php
index 1de65e7ec6f..5abd1e829c5 100644
--- a/plugins/publiclink/makelink.php
+++ b/apps/files_publiclink/ajax/makelink.php
@@ -1,12 +1,18 @@
<?php
$RUNTIME_NOAPPS=true; //no need to load the apps
-require_once '../../lib/base.php';
+require_once '../../../lib/base.php';
-require_once 'lib_public.php';
+require_once '../lib_public.php';
$path=$_GET['path'];
$expire=(isset($_GET['expire']))?$_GET['expire']:0;
+if($expire!==0){
+
+ $expire=strtotime($expire);
+}
+// echo $expire;
+// die();
$link=new OC_PublicLink($path,$expire);
echo $link->getToken();
diff --git a/apps/files_publiclink/appinfo/app.php b/apps/files_publiclink/appinfo/app.php
new file mode 100644
index 00000000000..894327e83d3
--- /dev/null
+++ b/apps/files_publiclink/appinfo/app.php
@@ -0,0 +1,6 @@
+<?php
+
+OC_APP::addSettingsPage( array( "id" => "files_publiclink_administration", "order" => 1, "href" => OC_HELPER::linkTo( "files_publiclink", "admin.php" ), "name" => "Public Links", "icon" => OC_HELPER::imagePath( "files_publiclink", "share.png" )));
+
+
+?>
diff --git a/plugins/publiclink/db_structure.xml b/apps/files_publiclink/appinfo/database.xml
index de63b03f445..de63b03f445 100644
--- a/plugins/publiclink/db_structure.xml
+++ b/apps/files_publiclink/appinfo/database.xml
diff --git a/apps/files_publiclink/appinfo/info.xml b/apps/files_publiclink/appinfo/info.xml
new file mode 100644
index 00000000000..1d41ea96662
--- /dev/null
+++ b/apps/files_publiclink/appinfo/info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<info>
+ <id>files_publiclink</id>
+ <name>Share by Publiclink</name>
+ <description>Simple file sharing by creating a public link to a file</description>
+ <version>0.2</version>
+ <licence>AGPL</licence>
+ <author>Robin Appelman</author>
+ <require>2</require>
+</info> \ No newline at end of file
diff --git a/apps/files_publiclink/css/admin.css b/apps/files_publiclink/css/admin.css
new file mode 100644
index 00000000000..f21b289f043
--- /dev/null
+++ b/apps/files_publiclink/css/admin.css
@@ -0,0 +1,2 @@
+td.path{min-width:200px}
+td.expire{width:120px} \ No newline at end of file
diff --git a/plugins/publiclink/get.php b/apps/files_publiclink/get.php
index 41b10484f9b..60570ac2249 100644
--- a/plugins/publiclink/get.php
+++ b/apps/files_publiclink/get.php
@@ -48,15 +48,15 @@ if($path!==false){
}
}
- $breadcrumbNav = new OC_TEMPLATE( "plugins/publiclink", "breadcrumb", "" );
+ $breadcrumbNav = new OC_TEMPLATE( "files_publiclink", "breadcrumb", "" );
$breadcrumbNav->assign( "breadcrumb", $breadcrumb );
$breadcrumbNav->assign('token',$token);
- $list = new OC_TEMPLATE( 'plugins/publiclink', 'files', '' );
+ $list = new OC_TEMPLATE( 'files_publiclink', 'files', '' );
$list->assign( 'files', $files );
$list->assign('token',$token);
- $tmpl = new OC_TEMPLATE( 'plugins/publiclink', 'index', 'user' );
+ $tmpl = new OC_TEMPLATE( 'files_publiclink', 'index', 'user' );
$tmpl->assign('fileList', $list->fetchPage());
$tmpl->assign( "breadcrumb", $breadcrumbNav->fetchPage() );
$tmpl->printPage();
diff --git a/apps/files_publiclink/js/admin.js b/apps/files_publiclink/js/admin.js
new file mode 100644
index 00000000000..017c62cb42a
--- /dev/null
+++ b/apps/files_publiclink/js/admin.js
@@ -0,0 +1,52 @@
+$(document).ready(function() {
+ $( "#expire" ).datepicker({
+ dateFormat:'MM d, yy',
+ altField: "#expire_time",
+ altFormat: "yy-mm-dd"
+ });
+ $( "#path" ).autocomplete({
+ source: "../../files/ajax/autocomplete.php",
+ minLength: 1
+ });
+ $("button.delete").live('click', function() {
+ event.preventDefault();
+ var token=$(this).attr('data-token');
+ var data="token="+token;
+ $.ajax({
+ type: 'GET',
+ url: 'ajax/deletelink.php',
+ cache: false,
+ data: data,
+ success: function(){
+ $('#'+token).remove();
+ }
+ });
+ });
+ $('#newlink').submit(function(){
+ event.preventDefault();
+ var path=$('#path').val();
+ var expire=$('#expire_time').val()||0;
+ var data='path='+path+'&expire='+expire;
+ $.ajax({
+ type: 'GET',
+ url: 'ajax/makelink.php',
+ cache: false,
+ data: data,
+ success: function(token){
+ if(token){
+ var html="<tr class='link' id='"+token+"'>";
+ html+="<td class='path'>"+path+"</td>";
+ var expire=($('#expire').val())?$('#expire').val():'Never'
+ html+="<td class='expire'>"+expire+"</td>"
+ html+="<td class='link'><a href='get.php?token="+token+"'>"+$('#baseUrl').val()+"?token="+token+"</a></td>"
+ html+="<td><button class='delete fancybutton' data-token='"+token+"'>Delete</button></td>"
+ html+="</tr>"
+ $(html).insertBefore($('#newlink_row'));
+ $('#expire').val('');
+ $('#expire_time').val('');
+ $('#path').val('');
+ }
+ }
+ });
+ })
+}); \ No newline at end of file
diff --git a/plugins/publiclink/lib_public.php b/apps/files_publiclink/lib_public.php
index 20b538d3ac9..aeef9212377 100644
--- a/plugins/publiclink/lib_public.php
+++ b/apps/files_publiclink/lib_public.php
@@ -54,6 +54,27 @@ class OC_PublicLink{
return $this->token;
}
+ /**
+ * gets all public links
+ * @return array
+ */
+ static public function getLinks(){
+ $query=OC_DB::prepare("SELECT * FROM *PREFIX*publiclink WHERE user=?");
+ return $query->execute(array($_SESSION['user_id']))->fetchAll();
+ }
+
+ /**
+ * delete a public link
+ */
+ static public function delete($token){
+ $query=OC_DB::prepare("SELECT user,path FROM *PREFIX*publiclink WHERE token=?");
+ $result=$query->execute(array($token))->fetchAll();
+ if(count($result)>0 and $result[0]['user']==$_SESSION['user_id']){
+ $query=OC_DB::prepare("DELETE FROM *PREFIX*publiclink WHERE token=?");
+ $query->execute(array($token));
+ }
+ }
+
private $token;
}
?> \ No newline at end of file
diff --git a/apps/files_publiclink/templates/admin.php b/apps/files_publiclink/templates/admin.php
new file mode 100644
index 00000000000..2483eef321a
--- /dev/null
+++ b/apps/files_publiclink/templates/admin.php
@@ -0,0 +1,28 @@
+<input type='hidden' id='baseUrl' value='<?php echo $_['baseUrl'];?>'/>
+<table id='linklist'>
+ <thead>
+ <tr>
+ <td class='path'>Path</td>
+ <td class='expire'>Expires</td>
+ <td class='link'>Link</td>
+ </tr>
+ </thead>
+ <tbody>
+ <?php foreach($_['links'] as $link):?>
+ <tr class='link' id='<?php echo $link['token'];?>'>
+ <td class='path'><?php echo $link['path'];?></td>
+ <td class='expire'><?php echo ($link['expire_time']==0)?'Never':OC_UTIL::formatdate($link['expire_time'],true);?></td>
+ <td class='link'><a href='get.php?token=<?php echo $link['token'];?>'><?php echo $_['baseUrl'];?>?token=<?php echo $link['token'];?></a></td>
+ <td><button class='delete fancybutton' data-token='<?php echo $link['token'];?>'>Delete</button></td>
+ </tr>
+ <?php endforeach;?>
+ <tr id='newlink_row'>
+ <form action='#' id='newlink'>
+ <input type='hidden' id='expire_time'/>
+ <td class='path'><input placeholder='Path' id='path'/></td>
+ <td class='expire'><input placeholder='Expires' id='expire'/></td>
+ <td><input type='submit' value='Share'/></td>
+ </form>
+ </tr>
+ </tbody>
+</table> \ No newline at end of file
diff --git a/plugins/publiclink/templates/breadcrumb.php b/apps/files_publiclink/templates/breadcrumb.php
index 3f4ae863ee0..3f4ae863ee0 100644
--- a/plugins/publiclink/templates/breadcrumb.php
+++ b/apps/files_publiclink/templates/breadcrumb.php
diff --git a/plugins/publiclink/templates/files.php b/apps/files_publiclink/templates/files.php
index 6473ad4c5c8..6473ad4c5c8 100644
--- a/plugins/publiclink/templates/files.php
+++ b/apps/files_publiclink/templates/files.php
diff --git a/plugins/publiclink/templates/index.php b/apps/files_publiclink/templates/index.php
index 9e238452603..9e238452603 100644
--- a/plugins/publiclink/templates/index.php
+++ b/apps/files_publiclink/templates/index.php
diff --git a/plugins/publiclink/plugin.xml b/plugins/publiclink/plugin.xml
deleted file mode 100644
index 75abed6cf08..00000000000
--- a/plugins/publiclink/plugin.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0"?>
-<plugin version="1.0">
- <info>
- <id>publiclink</id>
- <name>Simple file sharing by creating a public link to a file</name>
- <version>0.1</version>
- <licence>AGPL</licence>
- <author>Robin Appelman</author>
- <require>1.1</require>
- </info>
- <runtime>
- <include>lib_public.php</include>
- </runtime>
- <install>
- <database>db_structure.xml</database>
- </install>
-</plugin>