diff options
author | Robin Appelman <icewind1991@gmail.com> | 2011-06-02 02:45:35 +0200 |
---|---|---|
committer | Robin Appelman <icewind1991@gmail.com> | 2011-06-02 02:46:50 +0200 |
commit | 8c5a06028aa4bf7a29d79d63a713361ce2f50633 (patch) | |
tree | 3b94337d8bbbef5844dfe08d4478b34938655221 | |
parent | 6c6871336d6570b02b030d521d18eb4d28f2a83f (diff) | |
download | nextcloud-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
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> |