commit perl-App-MFILE-WWW for openSUSE:Factory
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 - coolo@suse.com + +- 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 - coolo@suse.com + +- 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 - coolo@suse.com + +- 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 <ncutler@suse.cz>" ], "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 <ncutler@suse.cz>' 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/978144939... + // 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',
participants (1)
-
root@hilbert.suse.de