Hello community,
here is the log from the commit of package perl-App-MFILE-WWW for
openSUSE:Factory checked in at 2017-03-28 15:21:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-App-MFILE-WWW (Old)
and /work/SRC/openSUSE:Factory/.perl-App-MFILE-WWW.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-App-MFILE-WWW"
Tue Mar 28 15:21:26 2017 rev:5 rq:478926 version:0.156
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-App-MFILE-WWW/perl-App-MFILE-WWW.changes
2016-11-18 22:04:05.000000000 +0100
+++
/work/SRC/openSUSE:Factory/.perl-App-MFILE-WWW.new/perl-App-MFILE-WWW.changes
2017-03-28 15:21:27.328081480 +0200
@@ -1,0 +2,50 @@
+Tue Mar 7 06:02:59 UTC 2017 - [email protected]
+
+- updated to 0.156
+ see /usr/share/doc/packages/perl-App-MFILE-WWW/Changes
+
+
+ 0.155 2017-02-27 22:37 CET
+ - html.js: handle special entries in dbrowser, too
+ - lib.js: add shallowCopy function
+ - spam console log less (rightPadSpaces, current-user.js)
+ - current-user: refrain from spamming log
+
+ 0.156 2017-02-28 15:23 CET
+ - lib.js: add isStringNotEmpty function
+
+-------------------------------------------------------------------
+Wed Mar 1 06:02:34 UTC 2017 - [email protected]
+
+- updated to 0.154
+ see /usr/share/doc/packages/perl-App-MFILE-WWW/Changes
+
+
+ 0.154 2017-02-27 15:40 CET
+ - build/ops: require recent versions of dependencies
+ - Cleanup session data display
+ - html.js: handle null entriesWrite array
+ - Implement a special divider dform entry, including rendering
+ - Implement a special dform entry that is just an empty line
+ - html: handle null elem.text in maxLength
+
+-------------------------------------------------------------------
+Sun Feb 26 06:02:01 UTC 2017 - [email protected]
+
+- updated to 0.153
+ see /usr/share/doc/packages/perl-App-MFILE-WWW/Changes
+
+
+ 0.153 2017-02-25 09:30 CET
+ - Refrain from making a new Plack::Session object
+ - doc: tweak log messages
+ - Resource.pm: implement session and session_id methods
+ - script: store sessions in a dedicated directory in /tmp
+ - Display session data on all screens
+ - login: do not trigger page reload when bad credentials
+ - Dispatch.pm: remove dead code
+ - Control display of session data by config parameter
+ - doc: better description of MFILE_APPNAME config param
+ - Control display of session data via configuration parameter
+
+-------------------------------------------------------------------
Old:
----
App-MFILE-WWW-0.152.tar.gz
New:
----
App-MFILE-WWW-0.156.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-App-MFILE-WWW.spec ++++++
--- /var/tmp/diff_new_pack.3J1YdK/_old 2017-03-28 15:21:28.251950634 +0200
+++ /var/tmp/diff_new_pack.3J1YdK/_new 2017-03-28 15:21:28.255950068 +0200
@@ -1,7 +1,7 @@
#
# spec file for package perl-App-MFILE-WWW
#
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,21 +17,21 @@
Name: perl-App-MFILE-WWW
-Version: 0.152
+Version: 0.156
Release: 0
%define cpan_name App-MFILE-WWW
Summary: Web UI development toolkit with prototype demo app
License: BSD-3-Clause
Group: Development/Libraries/Perl
Url: http://search.cpan.org/dist/App-MFILE-WWW/
-Source0:
http://www.cpan.org/authors/id/S/SM/SMITHFARM/%{cpan_name}-%{version}.tar.gz
+Source0:
https://cpan.metacpan.org/authors/id/S/SM/SMITHFARM/%{cpan_name}-%{version}.tar.gz
Source1: cpanspec.yml
BuildArch: noarch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
BuildRequires: perl-macros
-BuildRequires: perl(App::CELL) >= 0.194
-BuildRequires: perl(App::MFILE) >= 0.17
+BuildRequires: perl(App::CELL) >= 0.222
+BuildRequires: perl(App::MFILE) >= 0.181
BuildRequires: perl(File::ShareDir)
BuildRequires: perl(HTTP::Request)
BuildRequires: perl(JSON)
@@ -44,14 +44,13 @@
BuildRequires: perl(Plack::Middleware::StackTrace)
BuildRequires: perl(Plack::Middleware::Static)
BuildRequires: perl(Plack::Runner)
-BuildRequires: perl(Plack::Session)
BuildRequires: perl(Plack::Test)
BuildRequires: perl(Test::Fatal)
BuildRequires: perl(Test::JSON)
BuildRequires: perl(Try::Tiny)
BuildRequires: perl(Web::Machine) >= 0.15
-Requires: perl(App::CELL) >= 0.194
-Requires: perl(App::MFILE) >= 0.17
+Requires: perl(App::CELL) >= 0.222
+Requires: perl(App::MFILE) >= 0.181
Requires: perl(File::ShareDir)
Requires: perl(JSON)
Requires: perl(LWP::UserAgent)
@@ -62,7 +61,6 @@
Requires: perl(Plack::Middleware::StackTrace)
Requires: perl(Plack::Middleware::Static)
Requires: perl(Plack::Runner)
-Requires: perl(Plack::Session)
Requires: perl(Try::Tiny)
Requires: perl(Web::Machine) >= 0.15
%{perl_requires}
@@ -105,6 +103,7 @@
%files -f %{name}.files
%defattr(-,root,root,755)
-%doc Changes COPYING LICENSE README.rst share
+%doc Changes README.rst share
+%license COPYING LICENSE
%changelog
++++++ App-MFILE-WWW-0.152.tar.gz -> App-MFILE-WWW-0.156.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/Build.PL
new/App-MFILE-WWW-0.156/Build.PL
--- old/App-MFILE-WWW-0.152/Build.PL 2016-11-05 21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/Build.PL 2017-03-01 17:12:46.000000000 +0100
@@ -21,10 +21,9 @@
'Module::Build' => 0,
},
build_requires => {
- 'App::CELL' => 0.194,
- 'App::MFILE' => 0.170,
+ 'App::CELL' => 0.222,
+ 'App::MFILE' => 0.181,
'HTTP::Request' => 0,
- 'Plack::Session' => 0,
'Plack::Test' => 0,
'Scalar::Util' => 0,
'Test::Fatal' => 0,
@@ -32,8 +31,8 @@
},
requires => {
'perl' => 5.012,
- 'App::CELL' => 0.194,
- 'App::MFILE' => 0.170,
+ 'App::CELL' => 0.222,
+ 'App::MFILE' => 0.181,
'Getopt::Long' => 0,
'File::ShareDir' => 0,
'File::Temp' => 0,
@@ -46,7 +45,6 @@
'Plack::Middleware::StackTrace' => 0,
'Plack::Middleware::Static' => 0,
'Plack::Runner' => 0,
- 'Plack::Session' => 0,
'Scalar::Util' => 0,
'Try::Tiny' => 0,
'Web::Machine' => 0.15,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/Changes
new/App-MFILE-WWW-0.156/Changes
--- old/App-MFILE-WWW-0.152/Changes 2016-11-05 21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/Changes 2017-03-01 17:12:46.000000000 +0100
@@ -920,3 +920,32 @@
- core: improve display of empty table/rowselect in html.js
- core: display drowselect navigation only if rows > 1
+0.153 2017-02-25 09:30 CET
+- Refrain from making a new Plack::Session object
+- doc: tweak log messages
+- Resource.pm: implement session and session_id methods
+- script: store sessions in a dedicated directory in /tmp
+- Display session data on all screens
+- login: do not trigger page reload when bad credentials
+- Dispatch.pm: remove dead code
+- Control display of session data by config parameter
+- doc: better description of MFILE_APPNAME config param
+- Control display of session data via configuration parameter
+
+0.154 2017-02-27 15:40 CET
+- build/ops: require recent versions of dependencies
+- Cleanup session data display
+- html.js: handle null entriesWrite array
+- Implement a special divider dform entry, including rendering
+- Implement a special dform entry that is just an empty line
+- html: handle null elem.text in maxLength
+
+0.155 2017-02-27 22:37 CET
+- html.js: handle special entries in dbrowser, too
+- lib.js: add shallowCopy function
+- spam console log less (rightPadSpaces, current-user.js)
+- current-user: refrain from spamming log
+
+0.156 2017-02-28 15:23 CET
+- lib.js: add isStringNotEmpty function
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/META.json
new/App-MFILE-WWW-0.156/META.json
--- old/App-MFILE-WWW-0.152/META.json 2016-11-05 21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/META.json 2017-03-01 17:12:46.000000000 +0100
@@ -4,7 +4,7 @@
"Nathan Cutler <[email protected]>"
],
"dynamic_config" : 1,
- "generated_by" : "Module::Build version 0.4205",
+ "generated_by" : "Module::Build version 0.4003, CPAN::Meta::Converter
version 2.120921",
"license" : [
"bsd"
],
@@ -16,10 +16,9 @@
"prereqs" : {
"build" : {
"requires" : {
- "App::CELL" : "0.194",
- "App::MFILE" : "0.17",
+ "App::CELL" : "0.222",
+ "App::MFILE" : "0.181",
"HTTP::Request" : "0",
- "Plack::Session" : "0",
"Plack::Test" : "0",
"Scalar::Util" : "0",
"Test::Fatal" : "0",
@@ -33,8 +32,8 @@
},
"runtime" : {
"requires" : {
- "App::CELL" : "0.194",
- "App::MFILE" : "0.17",
+ "App::CELL" : "0.222",
+ "App::MFILE" : "0.181",
"File::ShareDir" : "1.00",
"File::Temp" : "0",
"Getopt::Long" : "0",
@@ -47,7 +46,6 @@
"Plack::Middleware::StackTrace" : "0",
"Plack::Middleware::Static" : "0",
"Plack::Runner" : "0",
- "Plack::Session" : "0",
"Scalar::Util" : "0",
"Try::Tiny" : "0",
"Web::Machine" : "0.15",
@@ -58,21 +56,22 @@
"provides" : {
"App::MFILE::WWW" : {
"file" : "lib/App/MFILE/WWW.pm",
- "version" : "0.152"
+ "version" : "0.156"
},
"App::MFILE::WWW::Dispatch" : {
- "file" : "lib/App/MFILE/WWW/Dispatch.pm"
+ "file" : "lib/App/MFILE/WWW/Dispatch.pm",
+ "version" : 0
},
"App::MFILE::WWW::Resource" : {
- "file" : "lib/App/MFILE/WWW/Resource.pm"
+ "file" : "lib/App/MFILE/WWW/Resource.pm",
+ "version" : 0
}
},
"release_status" : "stable",
"resources" : {
"license" : [
- "http://opensource.org/licenses/bsd-license.php"
+ "http://opensource.org/licenses/BSD-3-Clause"
]
},
- "version" : "0.152",
- "x_serialization_backend" : "JSON::PP version 2.27203"
+ "version" : "0.156"
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/META.yml
new/App-MFILE-WWW-0.156/META.yml
--- old/App-MFILE-WWW-0.152/META.yml 2016-11-05 21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/META.yml 2017-03-01 17:12:46.000000000 +0100
@@ -3,52 +3,51 @@
author:
- 'Nathan Cutler <[email protected]>'
build_requires:
- App::CELL: '0.194'
- App::MFILE: '0.17'
- HTTP::Request: '0'
- Plack::Session: '0'
- Plack::Test: '0'
- Scalar::Util: '0'
- Test::Fatal: '0'
- Test::JSON: '0'
+ App::CELL: 0.222
+ App::MFILE: 0.181
+ HTTP::Request: 0
+ Plack::Test: 0
+ Scalar::Util: 0
+ Test::Fatal: 0
+ Test::JSON: 0
configure_requires:
- Module::Build: '0'
+ Module::Build: 0
dynamic_config: 1
-generated_by: 'Module::Build version 0.4205, CPAN::Meta::Converter version
2.150005'
+generated_by: 'Module::Build version 0.4003, CPAN::Meta::Converter version
2.120921'
license: bsd
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
- version: '1.4'
+ version: 1.4
name: App-MFILE-WWW
provides:
App::MFILE::WWW:
file: lib/App/MFILE/WWW.pm
- version: '0.152'
+ version: 0.156
App::MFILE::WWW::Dispatch:
file: lib/App/MFILE/WWW/Dispatch.pm
+ version: 0
App::MFILE::WWW::Resource:
file: lib/App/MFILE/WWW/Resource.pm
+ version: 0
requires:
- App::CELL: '0.194'
- App::MFILE: '0.17'
- File::ShareDir: '1.00'
- File::Temp: '0'
- Getopt::Long: '0'
- JSON: '0'
- LWP::UserAgent: '0'
- Log::Any::Adapter: '0'
- Params::Validate: '1.06'
- Plack::Builder: '0'
- Plack::Middleware::Session: '0'
- Plack::Middleware::StackTrace: '0'
- Plack::Middleware::Static: '0'
- Plack::Runner: '0'
- Plack::Session: '0'
- Scalar::Util: '0'
- Try::Tiny: '0'
- Web::Machine: '0.15'
- perl: '5.012'
+ App::CELL: 0.222
+ App::MFILE: 0.181
+ File::ShareDir: 1.00
+ File::Temp: 0
+ Getopt::Long: 0
+ JSON: 0
+ LWP::UserAgent: 0
+ Log::Any::Adapter: 0
+ Params::Validate: 1.06
+ Plack::Builder: 0
+ Plack::Middleware::Session: 0
+ Plack::Middleware::StackTrace: 0
+ Plack::Middleware::Static: 0
+ Plack::Runner: 0
+ Scalar::Util: 0
+ Try::Tiny: 0
+ Web::Machine: 0.15
+ perl: 5.012
resources:
- license: http://opensource.org/licenses/bsd-license.php
-version: '0.152'
-x_serialization_backend: 'CPAN::Meta::YAML version 0.012'
+ license: http://opensource.org/licenses/BSD-3-Clause
+version: 0.156
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/Makefile.PL
new/App-MFILE-WWW-0.156/Makefile.PL
--- old/App-MFILE-WWW-0.152/Makefile.PL 2016-11-05 21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/Makefile.PL 2017-03-01 17:12:46.000000000 +0100
@@ -1,4 +1,4 @@
-# Note: this file was auto-generated by Module::Build::Compat version 0.4205
+# Note: this file was auto-generated by Module::Build::Compat version 0.4003
require 5.012;
use ExtUtils::MakeMaker;
WriteMakefile
@@ -6,8 +6,8 @@
'NAME' => 'App::MFILE::WWW',
'VERSION_FROM' => 'lib/App/MFILE/WWW.pm',
'PREREQ_PM' => {
- 'App::CELL' => '0.194',
- 'App::MFILE' => '0.17',
+ 'App::CELL' => '0.222',
+ 'App::MFILE' => '0.181',
'File::ShareDir' => '1.00',
'File::Temp' => 0,
'Getopt::Long' => 0,
@@ -21,7 +21,6 @@
'Plack::Middleware::StackTrace' => 0,
'Plack::Middleware::Static' => 0,
'Plack::Runner' => 0,
- 'Plack::Session' => 0,
'Plack::Test' => 0,
'Scalar::Util' => 0,
'Test::Fatal' => 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/bin/mfile-www
new/App-MFILE-WWW-0.156/bin/mfile-www
--- old/App-MFILE-WWW-0.152/bin/mfile-www 2016-11-05 21:18:27.000000000
+0100
+++ new/App-MFILE-WWW-0.156/bin/mfile-www 2017-03-01 17:12:46.000000000
+0100
@@ -44,13 +44,14 @@
use App::CELL::Util qw( is_directory_viable );
use App::MFILE::WWW qw( $VERSION );
use Getopt::Long;
-use File::Path;
+use File::Path qw( make_path remove_tree );
use File::ShareDir;
use File::Spec;
use Module::Load;
use Module::Runtime qw( is_module_name require_module );
use Plack::Builder;
use Plack::Runner;
+use Plack::Session::Store::File;
use Try::Tiny;
use Web::Machine;
@@ -288,7 +289,7 @@
my $module = join( '::', @tmp_c );
my $app_module = $module . '::Dispatch';
die "$app_module is not a module name" unless is_module_name( $app_module
);
- print "Derived distro is $app_distro\n";
+ print "_get_sharedir: Derived distro is $app_distro\n";
my $status = undef;
try {
@@ -337,7 +338,7 @@
my ( $old, $new ) = @_;
die "Need to be root to create symlink" unless $sharedir_writable;
my ( undef, $path, $file ) = File::Spec->splitpath( $new );
- File::Path::make_path( $path );
+ make_path( $path );
symlink( $old, $new ) ;
if ( ! stat( $new ) ) {
unlink( $new );
@@ -491,11 +492,16 @@
);
$runner->parse_options(@ARGV);
+remove_tree( '/tmp/mfile-www-sessions' );
+mkdir '/tmp/mfile-www-sessions';
$runner->run(
builder {
enable "StackTrace", force => 1;
- enable "Session", store => 'File';
+# enable "Session", store => 'File';
+ enable "Session", store => Plack::Session::Store::File->new(
+ dir => '/tmp/mfile-www-sessions',
+ );
enable "Static", path => qr{^/(js|css)/}, root => $http_root;
Web::Machine->new( resource => $dispatch_module, )->to_app;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW/Dispatch.pm
new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW/Dispatch.pm
--- old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW/Dispatch.pm 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW/Dispatch.pm 2017-03-01
17:12:46.000000000 +0100
@@ -42,7 +42,6 @@
use App::CELL qw( $CELL $log $meta $site );
use Data::Dumper;
-use File::Temp qw( tempdir );
use JSON;
use LWP::UserAgent;
use Params::Validate qw(:all);
@@ -50,9 +49,7 @@
# methods/attributes not defined in this module will be inherited from:
use parent 'App::MFILE::WWW::Resource';
-our $ua = LWP::UserAgent->new(
- cookie_jar => { file => tempdir( CLEANUP => 0 ) }
- );
+
=head1 NAME
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW/Resource.pm
new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW/Resource.pm
--- old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW/Resource.pm 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW/Resource.pm 2017-03-01
17:12:46.000000000 +0100
@@ -47,7 +47,6 @@
use JSON;
use LWP::UserAgent;
use Params::Validate qw(:all);
-use Plack::Session;
use Try::Tiny;
# methods/attributes not defined in this module will be inherited from:
@@ -101,6 +100,26 @@
}
+=head2 session
+
+=cut
+
+sub session {
+ my $self = shift;
+ return $self->request->{'env'}->{'psgix.session'};
+}
+
+
+=head2 session_id
+
+=cut
+
+sub session_id {
+ my $self = shift;
+ return $self->request->{'env'}->{'psgix.session.options'}->{'id'};
+}
+
+
=head2 service_available
This is the first method called on every incoming request.
@@ -128,14 +147,16 @@
sub _render_response_html {
my ( $self ) = @_;
+ $log->debug( "Entering " . __PACKAGE__ . "::_render_response_html" );
+
my $r = $self->request;
- my $session = Plack::Session->new( $r->{'env'} );
- my $ce = $session->get('currentUser');
- my $cepriv = $session->get('currentUserPriv');
+ my $session = $r->{'env'}->{'psgix.session'};
+ my $ce = $session->{'currentUser'};
+ my $cepriv = $session->{'currentUserPriv'};
my $entity;
$entity = ( $r->path_info =~ m/test/i )
- ? test_html( $ce, $cepriv )
- : main_html( $ce, $cepriv );
+ ? $self->test_html( $ce, $cepriv )
+ : $self->main_html( $ce, $cepriv );
return $entity;
}
@@ -276,7 +297,7 @@
=cut
sub main_html {
- my ( $ce, $cepriv ) = @_;
+ my ( $self, $ce, $cepriv ) = @_;
$cepriv = '' unless defined( $cepriv );
$log->debug( "Entering " . __PACKAGE__ . "::main_html() with \$ce " .
@@ -289,7 +310,7 @@
$r .= '<link rel="stylesheet" type="text/css" href="/css/start.css" />';
# Bring in RequireJS
- $r .= _require_js($ce, $cepriv);
+ $r .= $self->_require_js($ce, $cepriv);
$r .= '</head>';
$r .= '<body>';
@@ -310,7 +331,7 @@
=cut
sub test_html {
- my ( $ce, $cepriv ) = @_;
+ my ( $self, $ce, $cepriv ) = @_;
my $r = '';
@@ -320,7 +341,7 @@
$r .= '<link rel="stylesheet" type="text/css" href="/css/qunit.css" />';
# Bring in RequireJS
- $r .= _require_js($ce, $cepriv);
+ $r .= $self->_require_js($ce, $cepriv);
$r .= '</head><body>';
$r .= '<div id="qunit"></div>';
@@ -336,7 +357,7 @@
# HTML necessary for RequireJS
sub _require_js {
- my ( $ce, $cepriv ) = @_;
+ my ( $self, $ce, $cepriv ) = @_;
my $r = '';
@@ -397,6 +418,13 @@
$r .= 'loginDialogMaxLengthUsername: ' .
$site->MFILE_WWW_LOGIN_DIALOG_MAXLENGTH_USERNAME . ',';
$r .= 'loginDialogMaxLengthPassword: ' .
$site->MFILE_WWW_LOGIN_DIALOG_MAXLENGTH_PASSWORD . ',';
+ # session data
+ $r .= 'displaySessionData: ' . ( $site->MFILE_WWW_DISPLAY_SESSION_DATA ?
'true' : 'false' ) . ',';
+ if ( $site->MFILE_WWW_DISPLAY_SESSION_DATA ) {
+ $r .= 'sessionID: \'' . $self->session_id . '\',';
+ $r .= 'sessionLastSeen: \'' . ( exists $self->session->{'last_seen'} ?
$self->session->{'last_seen'} : 'never' ) . '\',';
+ }
+
# REST server URI
if ( defined( $site->DOCHAZKA_WWW_BACKEND_URI ) ) {
$r .= 'restURI: \'' . $site->DOCHAZKA_WWW_BACKEND_URI . '\',';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW.pm
new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW.pm
--- old/App-MFILE-WWW-0.152/lib/App/MFILE/WWW.pm 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/lib/App/MFILE/WWW.pm 2017-03-01
17:12:46.000000000 +0100
@@ -58,11 +58,11 @@
=head1 VERSION
-Version 0.152
+Version 0.156
=cut
-our $VERSION = '0.152';
+our $VERSION = '0.156';
our @EXPORT_OK = ( '$VERSION' );
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/config/WWW_Config.pm
new/App-MFILE-WWW-0.156/share/config/WWW_Config.pm
--- old/App-MFILE-WWW-0.152/share/config/WWW_Config.pm 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/config/WWW_Config.pm 2017-03-01
17:12:46.000000000 +0100
@@ -36,7 +36,9 @@
#
# MFILE_APPNAME
-# the name of this web front-end
+# the name of this web front-end (no colons; must match the directory
+# name where application-specific JavaScript files are stored - e.g.
+# share/js/mfile-www)
set( 'MFILE_APPNAME', 'mfile-www' );
# MFILE_WWW_DEBUG_MODE
@@ -109,6 +111,10 @@
# message that will be displayed for 1 second upon logout
set( 'MFILE_WWW_LOGOUT_MESSAGE', '<br><br><br><br>App::MFILE::WWW over and
out.<br><br>Have a lot of fun.<br><br><br><br>' );
+# MFILE_WWW_DISPLAY_SESSION_DATA
+# controls whether session data will be displayed on all screens
+set( 'MFILE_WWW_DISPLAY_SESSION_DATA', 0 );
+
# JAVASCRIPT (REQUIREJS)
# we use RequireJS to bring in dependencies - the following configuration
# parameters are required to bring in RequireJS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/ajax.js
new/App-MFILE-WWW-0.156/share/js/core/ajax.js
--- old/App-MFILE-WWW-0.152/share/js/core/ajax.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/ajax.js 2017-03-01
17:12:46.000000000 +0100
@@ -109,8 +109,10 @@
console.log("Payload is", data.payload);
if (data.payload.hasOwnProperty('code')) {
if (data.payload.code === "401" ) {
- console.log("401 encountered: logging out");
- logout();
+ if (mfao.method !== 'LOGIN') {
+ console.log("401 encountered: logging
out");
+ logout();
+ }
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/current-user.js
new/App-MFILE-WWW-0.156/share/js/core/current-user.js
--- old/App-MFILE-WWW-0.152/share/js/core/current-user.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/current-user.js 2017-03-01
17:12:46.000000000 +0100
@@ -80,8 +80,8 @@
priv = cf('currentUserPriv'),
flag1;
- console.log("current-user: ce is ", ce);
- console.log("current-user: priv is " + priv);
+ // console.log("current-user: ce is ", ce);
+ // console.log("current-user: priv is " + priv);
if (ce) {
$.extend(cu, ce)
@@ -90,7 +90,7 @@
// current-user function
return function (sw, arg) {
if (sw === 'obj') {
- console.log('current-user function called with "obj"');
+ // console.log('current-user function called with "obj"');
if (arg) {
console.log('NOTICE: setting current user object to ', arg);
cu = arg;
@@ -100,7 +100,7 @@
return cu.nick ? cu : null;
}
if (sw === 'priv') {
- console.log('current-user function called with "priv"');
+ // console.log('current-user function called with "priv"');
if (arg) {
console.log('NOTICE: setting current user priv to ' + arg);
priv = arg;
@@ -109,14 +109,14 @@
return priv;
}
if (sw === 'flag1') {
- console.log('current-user function called with "flag1"');
+ // console.log('current-user function called with "flag1"');
if (arg || arg === 0) {
console.log('NOTICE: setting current user flag1 to ' + arg);
flag1 = arg;
}
return flag1;
}
- console.log('current-user function called with no arguments');
+ // console.log('current-user function called with no arguments');
return {
'obj': cu,
'priv': priv,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/html.js
new/App-MFILE-WWW-0.156/share/js/core/html.js
--- old/App-MFILE-WWW-0.152/share/js/core/html.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/html.js 2017-03-01
17:12:46.000000000 +0100
@@ -105,6 +105,9 @@
len = arr ? arr.length : 0;
console.log("arr has " + len + " members");
max = arr.reduce(function(prevVal, elem) {
+ if (elem.text === null) {
+ elem.text = '';
+ }
if (elem.text.length > prevVal) {
prevVal = elem.text.length;
}
@@ -335,6 +338,10 @@
r += '<div id="noticesline" style="font-size: small">';
// r += appLib.fillNoticesLine();
r += '</div>';
+ if (cf('displaySessionData') === true) {
+ r += 'Plack session ID: ' + cf('sessionID');
+ r += ' (last_seen ' + cf('sessionLastSeen') + ')</br>';
+ }
return r;
}, // body
@@ -390,11 +397,16 @@
// determine characters needed for padding (based on longest
// entry)
if (dfo.entriesRead !== undefined) {
+ console.log("entriesRead", dfo.entriesRead);
allEntries = lib.forceArray(dfo.entriesRead);
}
if (dfo.entriesWrite !== undefined) {
- allEntries = allEntries.concat(dfo.entriesWrite);
+ console.log("entriesWrite", dfo.entriesWrite);
+ allEntries = allEntries.concat(
+ dfo.entriesWrite === null ? [] : dfo.entriesWrite
+ );
}
+ console.log("About to call maxLength() on allEntries",
allEntries);
needed = maxLength(allEntries) + 2;
// READ-ONLY entries first
@@ -402,7 +414,11 @@
console.log("Processing " + len + "read-only dform entries");
for (i = 0; i < len; i += 1) {
entry = dfo.entriesRead[i];
- if (lib.privCheck(entry.aclProfileRead)) {
+ if (entry.name === 'divider') {
+ r += Array(entry.maxlen).join(entry.text) + '<br>';
+ } else if (entry.name === 'emptyLine') {
+ r += '<br>';
+ } else if (lib.privCheck(entry.aclProfileRead)) {
r += lib.rightPadSpaces(entry.text.concat(':'),
needed);
r += '<span id="' + entry.name + '">';
r += valueToDisplay(obj, entry.prop);
@@ -472,7 +488,11 @@
if (len > 0) {
for (i = 0; i < len; i += 1) {
entry = dbo.entries[i];
- if (lib.privCheck(entry.aclProfileRead)) {
+ if (entry.name === 'divider') {
+ r += Array(entry.maxlen).join(entry.text) + '<br>';
+ } else if (entry.name === 'emptyLine') {
+ r += '<br>';
+ } else if (lib.privCheck(entry.aclProfileRead)) {
r += lib.rightPadSpaces(entry.text.concat(':'),
needed);
r += '<span id="' + entry.name + '">';
r += valueToDisplay(obj, entry.prop);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/lib.js
new/App-MFILE-WWW-0.156/share/js/core/lib.js
--- old/App-MFILE-WWW-0.152/share/js/core/lib.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/lib.js 2017-03-01
17:12:46.000000000 +0100
@@ -59,6 +59,24 @@
return {
+ // special entries
+ dividerEntry: {
+ name: 'divider',
+ aclProfileRead: 'passerby',
+ aclProfileWrite: null,
+ text: '-',
+ prop: null,
+ maxlen: 20
+ },
+ emptyLineEntry: {
+ name: 'emptyLine',
+ aclProfileRead: 'passerby',
+ aclProfileWrite: null,
+ text: null,
+ prop: null,
+ maxlen: 20
+ },
+
// clear the result line
clearResult: function () {
$('#result').css('text-align', 'left');
@@ -130,7 +148,7 @@
// right pad a string with spaces
rightPadSpaces: function (toPad, padto) {
var strToPad = ((toPad === null) ? '' : toPad).toString();
- console.log("Padding " + strToPad + " to " + padto + " spaces.");
+ // console.log("Padding " + strToPad + " to " + padto + "
spaces.");
var sp = ' ',
padSpaces = sp.repeat(padto - String(strToPad).length);
return strToPad.concat(padSpaces);
@@ -224,8 +242,35 @@
$("#result").html(msg);
$('input[name="sel"]').val('');
$('input[name="entry0"]').focus();
- }
+ },
+ // shallow object copy, from
+ //
http://blog.soulserv.net/understanding-object-cloning-in-javascript-part-i/
+ shallowCopy: function (original) {
+ // First create an empty object with
+ // same prototype of our original source
+ var clone = Object.create(Object.getPrototypeOf(original)),
+ i, keys = Object.getOwnPropertyNames(original);
+ for (i = 0; i < keys.length; i++) {
+ // copy each property into the clone
+ Object.defineProperty(clone, keys[i],
+ Object.getOwnPropertyDescriptor(original, keys[i])
+ );
+ }
+ return clone;
+ },
+
+ // boolean function for existing, non-empty string, from
+ //
https://www.safaribooksonline.com/library/view/javascript-cookbook/9781449390211/ch01s07.html
+ // true if variable exists, is a string, and has a length greater than
zero
+ isStringNotEmpty: function (unknownVariable) {
+ if (((typeof unknownVariable !== "undefined") &&
+ (typeof unknownVariable.valueOf() === "string")) &&
+ (unknownVariable.length > 0)) {
+ return true;
+ }
+ return false;
+ }
};
});
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/login-dialog.js
new/App-MFILE-WWW-0.156/share/js/core/login-dialog.js
--- old/App-MFILE-WWW-0.152/share/js/core/login-dialog.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/login-dialog.js 2017-03-01
17:12:46.000000000 +0100
@@ -73,6 +73,7 @@
},
// failure callback
fc = function (st) {
+ console.log("Login failed", st);
$('#result').html('Login failed: code ' +
st.payload.code +
' (' + st.payload.message + ')');
$('input[name="nam"]').focus();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/App-MFILE-WWW-0.152/share/js/core/logout.js
new/App-MFILE-WWW-0.156/share/js/core/logout.js
--- old/App-MFILE-WWW-0.152/share/js/core/logout.js 2016-11-05
21:18:27.000000000 +0100
+++ new/App-MFILE-WWW-0.156/share/js/core/logout.js 2017-03-01
17:12:46.000000000 +0100
@@ -50,7 +50,7 @@
return function () {
var displayLogoutMessage = function () {
$('#mainarea').html(html.logout());
- setTimeout(function () { location.reload(); }, 500);
+ location.reload();
},
rest = {
method: 'LOGIN',