Closed catalyst1987 closed 7 years ago
Saving bookmarks (etc.) is not implemented in current releases.
It is implemented in the new release I'm trying to get ready now. It also supports more formats (CBR/CBZ, more to come).
One of these days now... one of these days. Stay tuned.
This problem was fixed in v1.0.0
I'm still having this issue with v1.0.1, not sure if it's related to issue #35 and Nextcloud not being on it's own subdomain? I noticed that when I went to save a bookmark and grabbed the link for it the path looked weird: https://example.com/nextcloud/apps/files_reader/#epubcfi(/6/12[adcard]!4/2[ad]/2/1:0) (I'm thinking that needs to be /nextcloud/index.php/apps...?)
I think that's then causing a 403 error when it tries to save it:
"GET /nextcloud/apps/files_reader/ HTTP/2.0" 403
Also, if I understand right, the bookmarks get saved to the oc_reader_bookmarks table in the database?
EDIT: Getting these errors in Nextcloud logs:
Undefined index: title at /var/www/html/nextcloud/apps/files_reader/templates/epubreader.php#37
Undefined variable: dllink at /var/www/html/nextcloud/apps/files_reader/templates/epubreader.php#15
Use of undefined constant fileId - assumed 'fileId' at /var/www/html/nextcloud/apps/files_reader/lib/Controller/PageController.php#140
Use of undefined constant fileType - assumed 'fileType' at /var/www/html/nextcloud/apps/files_reader/lib/Controller/PageController.php#139
Use of undefined constant fileName - assumed 'fileName' at /var/www/html/nextcloud/apps/files_reader/lib/Controller/PageController.php#138
Bookmarks are a type of annotation, they're saved to _PREFIXreaderbookmarks with the bookmarked location stored in the value field. Other than the cursor (current reading location) they also contain the location in the content field, under the anchor tag.
Yes, they look that way, that path is created by combining the output from the OC/NC urlGenerator with app-specific data. In other words, it is OC/NC itself which provides the https://example.com/nextcloud/apps/files_reader/
part of the url, and you're right in that it does not contain the index.php
fragment. Either way, those bookmarks are - at least for now - meant for internal consumption as accessing a book in any other way than through the files app leads to an Access Denied message due to the absence of file information in the link - all you get is a location in the book, not the book itself. It would be possible to add a search fragment to the request to get a bookmark to resolve and load the file, maybe I should add an 'external bookmark' link as well.
That the path looks 'weird' is not that strange, those are CFI links which only make sense within the context of EPUB documents. EPUB, being reflowable to whatever page size you want, does not have a concept of 'fixed' page numbers like PDF and other fixed-format document formats do. It is possible to approximate something like a page number but that is no more than that, an approximation. CFI is accurate to a specific character in a document and as such usable to anchor annotations as well as more generic bookmarks. CBR/CBZ and PDF (coming up in the next version) do use 'normal' page numbers.
But... errrr what is it exactly which doesn't work for you? Can you bookmark within a publication? Can you read the publication? Do annotations work? Does it remember the reading position?
OK, you just edited you post while I had my answer open already. Which version of Nextcloud do you use? Which version of PHP?
@Yetangitu Thanks for the info! I'm running Nextcloud 11.0.2, PHP version 7.0.15. The issue is that annotations, bookmarks, and reading positions aren't saved when closing/reopening a book through the Files app, and I get those errors in the NC logs, as well as these 404s in the console for these requests: https://example.com/nextcloud/apps/files_reader/bookmark/cursor https://example.com/nextcloud/apps/files_reader/preference/default
What database do you use? Which web server?
OK, those messages about undefined constant fileId etc. are easily solvable, they're due to the use of barewords (missing quotes, PHP is not javascript...) but they should not cause these problems. The bit about a missing title and dllink are remnants of a previous version and will be fixed in the next release. None of these issues are the cause of your problems, though...
Can you open a book, open the source for the page and paste the contents of the app iframe <head>
tag?
Database is MySQL 5.7.17. I should also add that I'm doing an nginx reverse proxy to Apache for my webserver.
I found that adding this to my nginx config fixes the issue:
rewrite ^/nextcloud/apps/files_reader/preference/default /nextcloud/index.php/apps/files_reader/preferences/default;
rewrite ^/nextcloud/apps/files_reader/bookmark/cursor /nextcloud/index.php/apps/files_reader/bookmark/cursor/$args;
rewrite ^/nextcloud/apps/files_reader/bookmark /nextcloud/index.php/apps/files_reader/bookmark;
rewrite ^/nextcloud/apps/files_reader/bookmark/$args /nextcloud/index.php/apps/files_reader/bookmark/$args;
Here's what the <head>
tag looks like when I remove that config:
<head class="session" data-nonce='xxxxxxxxxxxxxxxxxxxxxxxxxxx=' data-downloadlink='/nextcloud/remote.php/webdav/Books/Books%20-%20Nonfiction/No%20Place%20to%20Hide/No%20Place%20to%20Hide_%20Edward%20Snowden%2C%20the%20NSA%20and%20the%20Surveillance%20State%20-%20Glenn%20Greenwald.epub' data-fileid='141891' data-filetype='epub' data-filename='No%20Place%20to%20Hide_%20Edward%20Snowden%2C%20the%20NSA%20and%20the%20Surveillance%20State%20-%20Glenn%20Greenwald' data-version='1.0.1.0071' data-basepath='/nextcloud/apps/files_reader/' data-scope='epubreader' data-cursor='null' data-defaults='[]' data-preferences='[]' data-metadata='{"id":"141891","updated":"2017-03-19 17:37:23","date":"2014-05-13T04:00:00+00:00","author":"{\"Greenwald, Glenn\":\"Glenn Greenwald\"}","title":"No Place to Hide: Edward Snowden, the NSA and the Surveillance State","language":"en","publisher":"Hamish Hamilton","isbn":"9780241146699","copyright":"All rights reserved","description":"Glenn Greenwald's No Place to Hide is the story of one of the greatest national security leaks in US history. In June 2013, reporter and political commentator Glenn Greenwald published a series of reports in the Guardian which rocked the world. The reports revealed shocking truths about the extent to which the National Security Agency had been gathering information about US citizens and intercepting communication worldwide, and were based on documents leaked by former National Security Agency employee Edward Snowden to Greenwald. Including new revelations from documents entrusted to Greenwald by Snowden, this essential book tells the story of Snowden and the NSA and examines the far-reaching consequences of the government's surveillance program, both in the US and abroad. 'The first thing I do when I turn on the computer in the morning is go to Glenn Greenwald's blog. He is truly one of our greatest writers right now' Michael Moore 'The most important voice to have entered the political discourse in years' Bill Moyers Glenn Greenwald is the author of several US bestsellers, including How Would A Patriot Act?, and A Tragic Legacy. Acclaimed as one of the twenty-five most influential political commentators by The Atlantic, Greenwald is a former constitutional law and civil rights attorney. He has been a columnist for the Guardian since August 2012 and his work has appeared in numerous newspapers and political news magazines, including The New York Times and the Los Angeles Times.","subjects":"[\"Politics\",\"History\"]","cover":null,"rescan":"2017-03-26 17:37:24"}' data-annotations='[{"name":"epubcfi610author42aut210","type":"bookmark","value":"epubcfi(\/6\/10[author]!4\/2[aut]\/2\/1:0)","content":{"id":"epubcfi610author42aut210","type":"bookmark","date":1489953761057,"edited":1489953761057,"anchor":"epubcfi(\/6\/10[author]!4\/2[aut]\/2\/1:0)","body":"ABOUT THE AUTHOR"},"lastModified":"1489953761090619"},{"name":"785159a6-8987-4711-c6d1-a4a0d3a29819","type":"annotation","value":"epubcfi(\/6\/10[author]!4\/8\/5:1)","content":{"id":"785159a6-8987-4711-c6d1-a4a0d3a29819","type":"annotation","date":1489953796702,"edited":1489953796702,"anchor":"epubcfi(\/6\/10[author]!4\/8\/5:1)","body":"sdfsf"},"lastModified":"1489953796737588"}]'>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="apple-mobile-web-app-capable" content="yes">
<base href="/nextcloud/apps/files_reader/">
<title>
</title>
<link rel="shortcut icon" href="img/book.png">
<link rel="stylesheet" href="/nextcloud/apps/files_reader/vendor/icomoon/style.css?v=1.0.1.0071">
<link rel="stylesheet" href="/nextcloud/apps/files_reader/vendor/epubjs/css/main.css?v=1.0.1.0071">
<link rel="stylesheet" href="/nextcloud/apps/files_reader/vendor/epubjs/css/sidebar.css?v=1.0.1.0071">
<link rel="stylesheet" href="/nextcloud/apps/files_reader/vendor/epubjs/css/popup.css?v=1.0.1.0071">
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/js/lib/typedarray.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/js/lib/Blob.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/js/lib/wgxpath.install.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/libs/jquery.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/bartaz/jquery.highlight.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/jquery/put-delete.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/sindresorhus/screenfull.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/libs/zip.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/epub.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/hooks.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/hooks/extensions/highlight.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/vendor/epubjs/reader.min.js?v=1.0.1.0071"> </script>
<script type="text/javascript" nonce="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" src="/nextcloud/apps/files_reader/js/ready.js?v=1.0.1.0071"> </script>
</head>
I means the iframe <head>
tag, the one with class="session". This contains all data- parameters used by Reader.
OK, the reverse proxy might change things compared to a direct connection.
Here is an example <head>
tag:
<head class="session" data-nonce='a3JlS004dmVtQXpqL2JZZUNRRVJqeDBuWkFkd3hkeHV0a2NyVmVqVkwyYz06NThmb0FJQ1Q2bVdscEk1bmEyaHkvVzVrQUVVRzlMRlcwd3BTWnFPeUhRMD0=' data-downloadlink='/remote.php/webdav/Library/fiction/NL/M/Mulisch_Harry/Mulisch%2C%20Harry%20-%20De%20ontdekking%20van%20de%20hemel.epub' data-fileid='17362418' data-filetype='epub' data-filename='Mulisch%2C%20Harry%20-%20De%20ontdekking%20van%20de%20hemel' data-version='1.0.1.0071' data-basepath='/apps/files_reader/' data-scope='epubreader' data-cursor='{"name":"__CURSOR__","type":"bookmark","value":"epubcfi(\/3\/2[x9789023443988-a]!4\/2[x9789023443988-a]\/4\/2\/2\/1:0)","content":null,"lastModified":1489956052753799}' data-defaults='[{"name":"customStyles","value":{"dayMode":{"name":"dayMode","selector":"*","rules":{"color":"#0a0a0a","background":"#f0f0f0"},"extra":null},"nightMode":{"name":"nightMode","selector":"*","rules":{"color":"#454545","background":"#000000"},"extra":null},"fontFamily":{"name":"fontFamily","selector":"*","rules":{"font-family":"verdana, trebuchet, droid sans serif, sans, sans-serif"},"extra":null},"fontSize":{"name":"fontSize","selector":"*","rules":{"font-size":"100%"},"extra":null},"fontWeight":{"name":"fontWeight","selector":"*","rules":{"font-weight":"100"},"extra":null},"pageWidth":{"name":"pageWidth","selector":"#viewer","rules":{"max-width":"72em"},"extra":null},"maximizePage":{"name":"maximizePage","selector":"#viewer","rules":{"margin":"auto","width":"100%","height":"95%","top":"5%"},"extra":null},"appleBugs":{"name":"appleBugs","selector":"document, html, body, p, span, div","rules":{"cursor":"pointer"},"extra":null}}}]' data-preferences='[]' data-metadata='[]' data-annotations='[{"name":"__CURSOR__","type":"bookmark","value":"epubcfi(\/3\/2[x9789023443988-a]!4\/2[x9789023443988-a]\/4\/2\/2\/1:0)","content":null,"lastModified":1489956052753799}]'>
BTW, you do not need to XXXX-out nonces, they are different for every request and don't contain any secret information.
Lol, thanks for the tip, I thought that's how nonces worked but just wanted to make sure I didn't paste anything stupid :sweat_smile:
I think I grabbed the tag for the Files app before, would this be it instead? (I clicked within the book and did view frame source, the URL for it was: /nextcloud/apps/files_reader/#epubcfi(/6/2[html-cover-page]!4/1:0)
<html class="ng-csp" data-placeholder-focus="false" lang="en" >
<head data-requesttoken="">
<meta charset="utf-8">
<title>
Nextcloud </title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="referrer" content="never">
<meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0">
<meta name="apple-itunes-app" content="app-id=1125420102">
<meta name="theme-color" content="#0082c9">
<link rel="icon" href="/nextcloud/core/img/favicon.ico">
<link rel="apple-touch-icon-precomposed" href="/nextcloud/core/img/favicon-touch.png">
<link rel="mask-icon" sizes="any" href="/nextcloud/core/img/favicon-mask.svg" color="#1d2d44">
<link rel="stylesheet" href="/nextcloud/core/vendor/select2/select2.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/styles.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/header.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/icons.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/fonts.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/apps.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/global.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/fixes.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/multiselect.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/mobile.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/vendor/jquery-ui/themes/base/jquery-ui.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/jquery-ui-fixes.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/tooltip.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/apps/files_pdfviewer/css/style.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/share.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/apps/files_versions/css/versions.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/apps/files_videoplayer/css/style.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/apps/notifications/css/styles.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/inputs.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/jquery.ocdialog.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/styles.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<link rel="stylesheet" href="/nextcloud/core/css/header.css?v=acfa2c95fc538cb1f59e987bcc8c81ee">
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/jquery/dist/jquery.min.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/jquery-migrate/jquery-migrate.min.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/jquery-ui/ui/jquery-ui.custom.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/underscore/underscore.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/moment/min/moment-with-locales.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/handlebars/handlebars.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/blueimp-md5/js/md5.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/bootstrap/js/tooltip.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/backbone/backbone.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/es6-promise/dist/es6-promise.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/davclient.js/lib/client.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/clipboard/dist/clipboard.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/autosize/dist/autosize.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/jquery.ocdialog.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/oc-dialogs.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/js.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/l10n.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/octemplate.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/eventsource.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/public/appconfig.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/config.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/search/js/search.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/oc-requesttoken.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/apps.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/mimetype.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/mimetypelist.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/snapjs/dist/latest/snap.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/backbone/backbone.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/oc-backbone.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/placeholder.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/jquery.avatar.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/backgroundjobs.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/files_pdfviewer/js/previewplugin.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/shareconfigmodel.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/shareitemmodel.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/sharedialogresharerinfoview.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/sharedialoglinkshareview.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/sharedialogexpirationview.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/sharedialogshareelistview.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/sharedialogview.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/share.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/files_reader/js/plugin.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/files_videoplayer/js/viewer.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/notifications/js/app.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/notifications/js/notification.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/apps/notifications/js/richObjectStringParser.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/vendor/select2/select2.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/select2-toggleselect.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/jquery-ui-fixes.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/files/fileinfo.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<script nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0=" src="/nextcloud/core/js/files/client.js?v=acfa2c95fc538cb1f59e987bcc8c81ee"></script>
<link rel="stylesheet" href="/nextcloud/index.php/apps/theming/styles?v=0"/><script src="/nextcloud/index.php/apps/theming/js/theming?v=0" nonce="V25CVit0UHM3NCtURjlidGg2REZJbnpMYlFPZlMyK3NhUDc3YUYzVnRQWT06RmhnQzFaMjFsdW45YjVHazdNS1RiaGo3SEVxc2ZBbmVJSStQSUcrWjhNWT0="></script> </head>
OK, checking your answer in https://github.com/Yetangitu/owncloud-apps/issues/34#issuecomment-287644873 shows that you did, indeed, post the correct <head>
tag. It also shows the <base>
tag which, as predicted, does not contain index.php. As to whether it should, or whether OC/NC should always be configured to redirect requests for .../apps to .../index.php/apps I'll leave for some other time, but it is clear that this is why it is missing. I'll ask around on the NC/OC lists and/or channels what the consensus is on whether this is a bug or a feature.
BTW, here is the cause of the 'missing index.php' phenomenon:
https://github.com/owncloud/core/pull/14081
There's a lively dicussion as to whether it is a good idea to remove index.php or not.
To make a long discussion a bit longer still, see
https://doc.owncloud.com/server/9.1/admin_manual/configuration_server/index_php_less_urls.html
If you use Apache - as you seem to do - you seem to need to make sure that the .htaccess in the NC directory is writable before you do an update. You also seem to need to make the mentioned changes to config.php and to run occ maintenance:update:htaccess
after making the required changes.
If you use nginx - which you do as well, which might complicate matters - you can derive your site configuration from the one shown here:
I tested this, it works (on plain nginx, no Apache involved).
@Yetangitu Awesome, thanks. I'll test that maintenance:update:htaccess
command to see if that helps, I didn't realize that not having index.php in the base URL was even an option and just assumed that it was always supposed to be there.
I know I definitely based my nginx config off of what you link to above (as well as the docs for the Apache config), but I realize that sometimes things act a bit strangely since I do the reverse proxy setup. I think for now I'm OK with the workaround in the nginx config instead of messing with the index.php in the URL since I can get bookmarks/annotations to work, but I'll definitely do some reading on that.
Thanks again for the info and for explaining how it all fits together!
When I added'htaccess.RewriteBase' => '/nextcloud',
to config/config.php
and ran occ maintenance:update:htaccess
it worked perfectly without the nginx trickery.
Tried adding a bookmark to an epub while in the reader. Closed the epub and then reopened it, but the bookmark was no longer there.
This is happening in Nextcloud. Haven't tried in owncloud.