diff options
author | priyanka-m <priyanka.menghani@gmail.com> | 2012-12-18 21:00:40 +0400 |
---|---|---|
committer | priyanka-m <priyanka.menghani@gmail.com> | 2012-12-18 21:00:40 +0400 |
commit | ae3637650819e15edb84c703b01793493d49de36 (patch) | |
tree | 783e82cd94bd8b9e5f0bf8670e48ec46b72b4f23 /reader | |
parent | 1f684d335bc7393abecc2131f245b431defc4ae5 (diff) |
Tagging works perfect, also the option to remove tags dynamically by users,added
Diffstat (limited to 'reader')
-rw-r--r-- | reader/ajax/remove_tags.php | 16 | ||||
-rwxr-xr-x | reader/css/reader.css | 7 | ||||
-rwxr-xr-x | reader/js/.goutputstream-GYESPW | 161 | ||||
-rwxr-xr-x | reader/js/integrate.js | 38 | ||||
-rwxr-xr-x | reader/lib/library_display.php | 27 |
5 files changed, 227 insertions, 22 deletions
diff --git a/reader/ajax/remove_tags.php b/reader/ajax/remove_tags.php new file mode 100644 index 000000000..82ad3671e --- /dev/null +++ b/reader/ajax/remove_tags.php @@ -0,0 +1,16 @@ +<?php + include ('apps/reader/lib/tag_utils.php'); + $filepath = $_POST['filepath']; + $tag_toBeRemv = $_POST['tag']; + $tags = find_tags_for_ebook($filepath); + + $arr = explode(',',$tags); + $arr2 = array(); + foreach($arr as $a) { + if (strcmp($a,$tag_toBeRemv) != 0) + $arr2[] = $a; + } + $new_tags = implode(",",$arr2); + update_tag_for_ebook($new_tags,$filepath); + +?> diff --git a/reader/css/reader.css b/reader/css/reader.css index 4d05c5484..ec0bfecac 100755 --- a/reader/css/reader.css +++ b/reader/css/reader.css @@ -24,3 +24,10 @@ div#thumbs img { border:1px solid #EEE; -webkit-box-shadow: 4px 4px 4px 0px grey #displaybox { margin-top:8px; margin-left:12px; font-size:14px; color:grey; width:200px; height:30px; } #displaybox a { color:grey; } input.start { margin-left:12px;} + +div#result { position:absolute; left:2px; top:35px;} +.each_result { background-color: #EEE; display:inline-block; margin:5px; height:25px; border-radius:5px; } +.each_result:hover { background-color: #DDD;} +#each_tag,#close { padding: 5px; font-size:14px;} +#each_tag { color:grey;} +form#TagForm { position:absolute; top:100px; left:10px;} diff --git a/reader/js/.goutputstream-GYESPW b/reader/js/.goutputstream-GYESPW new file mode 100755 index 000000000..11b2e0248 --- /dev/null +++ b/reader/js/.goutputstream-GYESPW @@ -0,0 +1,161 @@ +$(document).ready(function() { + $('#fileList tr').each(function(){ + // data-file attribute to contain unescaped filenames. + $(this).attr('data-file',decodeURIComponent($(this).attr('data-file'))); + }); + + $('#file_action_panel').attr('activeAction', false); + + $("#TagForm").submit(function(event) { + event.preventDefault(); + var $form = $( this ), + tag = $form.find( 'input[name="tag"]' ).val(), + url = 'apps/reader/ajax/tags.php'; + var path = $(this).parent().children('a.name').attr('dir'); + $.post( url, {tag:tag,path:path}, + function( data ) { + $("#result").append('<a href = "apps/reader/fetch_tags.php?tag='+data+'">'+data+'</a>'); + } + ); + }); + + $('#close').click(function(){ + event.preventDefault(); + var parent = $(this).parent(); + var filepath = $(this).parent().parent().parent().children('a.name').attr('dir'); + var url = 'apps/reader/ajax/remove_tags.php'; + var tag = $(this).attr('value'); + $.post(url, {tag:tag, filepath:filepath}, function(data) {alert(data)}); + }); +}); + +$(function() { + // See if url conatins the index 'reader' + if(location.href.indexOf("reader")!=-1) { + 'use strict'; + // create thumbnails for pdfs inside current directory. + create_thumbnails(); + create_thumbnails_for_directories(); + // Render pdf view on every click of a thumbnail, now and in future. + $('td.filename a.name').live('click',function(event) { + event.preventDefault(); + var filename=$(this).parent().parent().attr('data-file'); + var tr=$('tr').filterAttr('data-file',filename); + var mime=$(this).parent().parent().data('mime'); + var type=$(this).parent().parent().data('type'); + // Check if clicked link is a pdf file or a directory, perform suitable function. + var action=getAction(mime,type); + if(action){ + action(filename); + } + }); + } +}); + +/* Function that returns suitable function definition to be executed on + * click of the file whose mime and type are passed. */ +function getAction(mime,type) { + var name; + if(mime == 'application/pdf') { + name = function (filename){ + showPDFviewer($('#dir').val(),filename); + } + } + else { + name = function (filename){ + window.location=OC.linkTo('reader', 'index.php') + '&dir='+ + encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+ + encodeURIComponent(filename) + '/'; + } + } + return name; +} + +function create_thumbnails() { + PDFJS.disableWorker = true; + $('td#thumbnail_container > img').each(function() { + // Get url and title of each pdf file from image tags. + var title = $(this).parent().parent().attr('data-file'); + var location = $(this).attr('id'); + var url = OC.linkTo('files', 'download.php')+'?file=' + location; + var thumbnail_exists = $(this).attr('value'); + if (thumbnail_exists == "false") { + if (url.indexOf('pdf') != -1) { + render_thumbnail(url,location,title); + } + } + }); +} + +function create_thumbnails_for_directories() { + $('div#thumbs img').each(function(){ + var thumb_exists = $(this).attr('value'); + if (thumb_exists == "false") { + var location = $(this).attr('id'); + var url = OC.linkTo('files', 'download.php')+'?file=' + location; + var title = location.replace(/\\/g,'/').replace( /.*\//, '' ); + if (url.indexOf('pdf') != -1) { + render_thumbnail(url,location,title); + } + } + }); +} + +function canvasSaver(canvas,title,location) { + var canvas_data = canvas.toDataURL('image/png'); + $.post("apps/reader/ajax/canvas_saver.php", {canv_data:canvas_data,title:title,location:location}); +} + + +function render_thumbnail(url,location,title) { + + PDFJS.getDocument(url).then(function(pdf) { + // Using promise to fetch the page + pdf.getPage(1).then(function(page) { + var scale = 0.2; + var viewport = page.getViewport(scale); + + // Create canvas elements for each pdf's first page. + var canvas = document.createElement("canvas"); + + // Canvas elements should be of proper size, not too big, not too small. + if (viewport.height > 170 || viewport.width > 130) { + scale = 0.1; + } + else if (viewport.height < 129 || viewport.width < 86) { + scale = 0.3; + } + + viewport = page.getViewport(scale); + canvas.height = viewport.height; + canvas.width = viewport.width; + + var ctx = canvas.getContext('2d'); + ctx.save(); + ctx.fillStyle = 'rgb(255, 255, 255)'; + ctx.fillRect(0, 0, canvas.width, canvas.height); + ctx.restore(); + + var view = page.view; + var scaleX = (canvas.width / page.width); + var scaleY = (canvas.height / page.height); + ctx.translate(-view.x * scaleX, -view.y * scaleY); + + // Render PDF page into canvas context + var renderContext = { + canvasContext: ctx, + viewport: viewport + }; + + pageRendering = page.render(renderContext); + pageRendering.onData(function(){ + canvasSaver(canvas,title,location); + var imageElement = document.getElementById(location); + imageElement.src = canvas.toDataURL(); + imageElement.style.height = '100px'; + imageElement.style.width = '100px'; + + }); + }); + }); +} diff --git a/reader/js/integrate.js b/reader/js/integrate.js index 438439b0e..141fe7b43 100755 --- a/reader/js/integrate.js +++ b/reader/js/integrate.js @@ -6,20 +6,9 @@ $(document).ready(function() { $('#file_action_panel').attr('activeAction', false); - $("#TagForm").submit(function(event) { - event.preventDefault(); - var $form = $( this ), - tag = $form.find( 'input[name="tag"]' ).val(), - url = 'apps/reader/ajax/tags.php'; - var path = $(this).parent().children('a.name').attr('dir'); - $.post( url, {tag:tag,path:path}, - function( data ) { - $("#result").append('<a href = "apps/reader/fetch_tags.php?tag='+data+'">'+data+'</a>'); - } - ); - }); }); + $(function() { // See if url conatins the index 'reader' if(location.href.indexOf("reader")!=-1) { @@ -41,6 +30,31 @@ $(function() { } }); } + + $('form#TagForm').submit(function(event) { + event.preventDefault(); + var path = $(this).parent().children('a.name').attr('dir'); + var result = $(this).parent().children('div#result'); + var $form = $(this), + tag = $form.find( 'input[name="tag"]' ).val(), + url = $form.attr('action'); + $.post( url, {tag:tag,path:path}, + function(data) { + result.append('<div class = "each_result"><a id = "each_tag" "href = "apps/reader/fetch_tags.php?tag='+data+'">'+data+'</a><a id = "close" value = "'+data+'">x</a></div></div>'); + } + ); + }); + + $('a#close').click(function(){ + event.preventDefault(); + var elem = $(this).parent(); + var filepath = $(this).parent().parent().parent().children('a.name').attr('dir'); + var url = 'apps/reader/ajax/remove_tags.php'; + var tag = $(this).attr('value'); + elem.hide(); + $.post(url, {tag:tag, filepath:filepath}); + }); + }); /* Function that returns suitable function definition to be executed on diff --git a/reader/lib/library_display.php b/reader/lib/library_display.php index f435a9391..6383211fd 100755 --- a/reader/lib/library_display.php +++ b/reader/lib/library_display.php @@ -13,19 +13,26 @@ function display_each_ebook($directory,$name) { $each_row = find_tags_for_ebook(urldecode($directory).urldecode($name)); $tags = explode(",",$each_row); if (count($tags) < 5) { - echo '<form action="/" id="TagForm"> + echo '<form action = "apps/reader/ajax/tags.php" id="TagForm"> <input type="text" name="tag" placeholder="Add Tag..." /> - <input type="submit" value="add tag" /> + <input type="submit" value="Add Tag" /> </form>'; } - echo '<div id="result">'; - foreach ($tags as $tag) { - echo '<a href = "'.\OCP\Util::linkTo('reader', 'fetch_tags.php').'?tag='.$tag.'">' - .ucwords($tag). - '</a>'; - } - echo '</div>'; - echo '</td>'; + + if (count($tags) >= 1) { + echo '<div id="result">'; + foreach ($tags as $tag) { + if ($tag != '' ) { + echo '<div class = "each_result">'; + echo '<a id = "each_tag" href = "'.\OCP\Util::linkTo('reader', 'fetch_tags.php').'?tag='.$tag.'">' + .ucwords($tag). + '</a>'; + echo '<a id = "close" value = "'.$tag.'">x</a></div>'; + } + } + echo '</div>'; + } + echo '</td>'; } function display_sub_dirs($current_dir,$sub_dirs) { |