diff --git a/CHANGELOG.md b/CHANGELOG.md
index 30a3279a..1d94d8b8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,18 @@
# Changelog
+## v1.3.8 (2016-02-21)
+
+* Fix: Regression unable to clear HTTP password.
+* Fix: Remove media tags from script arguments for server notifications.
+* Fix: Encode poster titles to UTF-8 for Imgur upload.
+* Fix: Allow notifications to send without poster if Imgur upload fails.
+* Add: Notification Logs table in the Logs tab.
+* Add: Toggle in settings to enable posters in notifications. (Disabled by default.)
+* Change: Save Imgur poster URL to database so upload is not needed every time.
+* Change: Notify log in database to log each event as a separate entry.
+* Change: Monitor remote access is unchecked if remote access is disabled on server.
+
+
## v1.3.7 (2016-02-20)
* Fix: Verifying server with SSL enabled.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 146b1cfe..ea47c243 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -3,10 +3,43 @@
## Issues
In case you read this because you are posting an issue, please take a minute and conside the things below. The issue tracker is not a support forum. It is primarily intended to submit bugs, improvements or feature requests. However, we are glad to help you, and make sure the problem is not caused by PlexPy, but don't expect step-by-step answers.
-* Use the search function. Chances are that your problem is already discussed. Do not append to (closed) issues if your problem does not fit the discussion.
-* Visit the [Troubleshooting](../../wiki/TroubleShooting) wiki first.
-* Use [proper formatting](https://help.github.com/articles/github-flavored-markdown/). Paste your logs in code blocks.
-* Close your issue if you resolved it.
+##### Many issues can simply be solved by:
+
+- Making sure you update to the latest version.
+- Turning your device off and on again.
+- Analyzing your logs, you just might find the solution yourself!
+- Using the **search** function to see if this issue has already been reported/solved.
+- Checking the [Wiki](https://github.com/drzoidberg33/plexpy/wiki) for
+[ [Installation] ](https://github.com/drzoidberg33/plexpy/wiki/Installation) and
+[ [FAQs] ](https://github.com/drzoidberg33/plexpy/wiki/Frequently-Asked-Questions-(FAQ)).
+- For basic questions try asking on [Gitter](https://gitter.im/drzoidberg33/plexpy) or the [Plex Forums](https://forums.plex.tv/discussion/169591/plexpy-another-plex-monitoring-program) first before opening an issue.
+
+##### If nothing has worked:
+
+1. Open a new issue on the GitHub [issue tracker](http://github.com/drzoidberg33/plexpy/issues).
+2. Provide a clear title to easily help identify your problem.
+3. Use proper [markdown syntax](https://help.github.com/articles/github-flavored-markdown) to structure your post (i.e. code/log in code blocks).
+4. Make sure you provide the following information:
+ - [ ] Version
+ - [ ] Branch
+ - [ ] Commit hash
+ - [ ] Operating system
+ - [ ] Python version
+ - [ ] What you did?
+ - [ ] What happened?
+ - [ ] What you expected?
+ - [ ] How can we reproduce your issue?
+ - [ ] What are your (relevant) settings?
+ - [ ] Include a link to your **FULL** (not just a few lines!) log file that has the error. Please use [Gist](http://gist.github.com) or [Pastebin](http://pastebin.com/).
+5. Close your issue when it's solved! If you found the solution yourself please comment so that others benefit from it.
+
+## Feature Requests
+
+1. Search for similar existing 'issues', feature requests can be recognized by the blue `enhancement` label.
+2. If a similar request exists, post a comment (+1, or add a new idea to the existing request).
+3. If no similar requests exist, you can create a new one.
+4. Provide a clear title to easily identify the feature request.
+5. Tag your feature request with `[Feature Request]` so it can be identified easily.
## Pull Requests
If you think you can contribute code to the PlexPy repository, do not hesitate to submit a pull request.
diff --git a/README.md b/README.md
index b603a274..d613581e 100644
--- a/README.md
+++ b/README.md
@@ -50,9 +50,11 @@ This project is based on code from [Headphones](https://github.com/rembo10/headp
2. Provide a clear title to easily help identify your problem.
3. Use proper [markdown syntax](https://help.github.com/articles/github-flavored-markdown) to structure your post (i.e. code/log in code blocks).
4. Make sure you provide the following information:
+ - [ ] Version
- [ ] Branch
- - [ ] Version/Commit hash
- - [ ] Your operating system and python version
+ - [ ] Commit hash
+ - [ ] Operating system
+ - [ ] Python version
- [ ] What you did?
- [ ] What happened?
- [ ] What you expected?
diff --git a/data/interfaces/default/js/tables/notification_logs.js b/data/interfaces/default/js/tables/notification_logs.js
new file mode 100644
index 00000000..203c323b
--- /dev/null
+++ b/data/interfaces/default/js/tables/notification_logs.js
@@ -0,0 +1,89 @@
+notification_log_table_options = {
+ "destroy": true,
+ "serverSide": true,
+ "processing": false,
+ "pagingType": "bootstrap",
+ "order": [ 0, 'desc'],
+ "pageLength": 50,
+ "stateSave": false,
+ "language": {
+ "search":"Search: ",
+ "lengthMenu":"Show _MENU_ lines per page",
+ "emptyTable": "No log information available",
+ "info":"Showing _START_ to _END_ of _TOTAL_ lines",
+ "infoEmpty":"Showing 0 to 0 of 0 lines",
+ "infoFiltered":"(filtered from _MAX_ total lines)"},
+ "columnDefs": [
+ {
+ "targets": [0],
+ "data": "timestamp",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(moment(cellData, "X").format('YYYY-MM-DD HH:mm:ss'));
+ }
+ },
+ "width": "10%",
+ "className": "no-wrap hidden-xs"
+ },
+ {
+ "targets": [1],
+ "data": "agent_name",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(cellData);
+ }
+ },
+ "width": "7%",
+ "className": "no-wrap hidden-sm hidden-xs"
+ },
+ {
+ "targets": [2],
+ "data": "notify_action",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(cellData);
+ }
+ },
+ "width": "5%"
+ },
+ {
+ "targets": [3],
+ "data": "subject_text",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(cellData);
+ }
+ },
+ "width": "20%"
+ },
+ {
+ "targets": [4],
+ "data": "body_text",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(cellData);
+ }
+ },
+ "width": "38%"
+ },
+ {
+ "targets": [5],
+ "data": "script_args",
+ "createdCell": function (td, cellData, rowData, row, col) {
+ if (cellData !== '') {
+ $(td).html(cellData);
+ }
+ },
+ "width": "20%"
+ }
+ ],
+ "drawCallback": function (settings) {
+ // Jump to top of page
+ //$('html,body').scrollTop(0);
+ $('#ajaxMsg').fadeOut();
+ },
+ "preDrawCallback": function(settings) {
+ var msg = " Fetching rows...";
+ showMsg(msg, false, false, 0)
+ }
+}
diff --git a/data/interfaces/default/logs.html b/data/interfaces/default/logs.html
index 04a2938a..56d18729 100644
--- a/data/interfaces/default/logs.html
+++ b/data/interfaces/default/logs.html
@@ -30,6 +30,7 @@ from plexpy import helpers
PlexPy Logs
Plex Media Server Logs
Plex Media Scanner Logs
+ Notification Logs
@@ -61,14 +62,28 @@ from plexpy import helpers
-
- Timestamp |
- Level |
- Message |
-
+
+ Timestamp |
+ Level |
+ Message |
+
-
-
+
+
+
+
+
+
+
+ Timestamp |
+ Agent |
+ Action |
+ Subject Text |
+ Body Text |
+ Script Args |
+
+
+
@@ -94,8 +109,10 @@ from plexpy import helpers
+
+