tdiary 5.5.1 → 5.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ChangeLog +2 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +39 -40
- data/doc/HOWTO-make-theme.md +3 -3
- data/doc/UPGRADE.md +1 -1
- data/js/draft.js +152 -52
- data/js/image.js +127 -28
- data/lib/tdiary/admin.rb +11 -13
- data/lib/tdiary/application.rb +2 -7
- data/lib/tdiary/author_only_base.rb +78 -9
- data/lib/tdiary/base.rb +2 -2
- data/lib/tdiary/cgi_adapter.rb +7 -5
- data/lib/tdiary/cgi_compat.rb +27 -97
- data/lib/tdiary/configuration.rb +4 -0
- data/lib/tdiary/core_ext.rb +146 -1
- data/lib/tdiary/dispatcher/index_main.rb +5 -23
- data/lib/tdiary/dispatcher/update_main.rb +2 -17
- data/lib/tdiary/dispatcher.rb +29 -15
- data/lib/tdiary/filter/default.rb +2 -2
- data/lib/tdiary/filter/spam.rb +2 -2
- data/lib/tdiary/filter.rb +1 -1
- data/lib/tdiary/plugin/00default.rb +18 -3
- data/lib/tdiary/plugin/en/00default.rb +15 -0
- data/lib/tdiary/plugin/ja/00default.rb +15 -0
- data/lib/tdiary/plugin.rb +1 -1
- data/lib/tdiary/rack/error_handler.rb +36 -0
- data/lib/tdiary/rack.rb +1 -0
- data/lib/tdiary/request.rb +3 -2
- data/lib/tdiary/server.rb +25 -3
- data/lib/tdiary/version.rb +1 -1
- data/lib/tdiary/view.rb +33 -28
- data/lib/tdiary/view_helper.rb +10 -2
- data/lib/tdiary.rb +6 -1
- data/misc/plugin/amazon.rb +37 -11
- data/misc/plugin/amazon_rakuten.rb +75 -0
- data/misc/plugin/draft.rb +75 -0
- data/misc/plugin/en/image.rb +5 -0
- data/misc/plugin/en/makerss.rb +4 -0
- data/misc/plugin/image.rb +15 -4
- data/misc/plugin/ja/makerss.rb +3 -0
- data/misc/plugin/makerss.rb +6 -5
- data/tdiary.conf.sample +8 -0
- data/tdiary.conf.sample-en +8 -0
- data/theme/default/default.css +33 -8
- data/vendor/bundle/ruby/3.4.0/cache/net-imap-0.6.6.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/net-protocol-0.3.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rack-3.2.7.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/cgi/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/gem_make.out +6 -6
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/date_core.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/gem_make.out +6 -6
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/mkmf.log +4 -4
- data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/ext/cgi/escape/Makefile +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/Makefile +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/lib/date_core.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/Gemfile +3 -4
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/README.md +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.6.6/Rakefile +24 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/command_data.rb +62 -92
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_accessors.rb +8 -9
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_inheritance.rb +64 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_version_defaults.rb +1 -4
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config.rb +209 -35
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/connection_state.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/data_encoding.rb +127 -27
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.6.6/lib/net/imap/errors.rb +372 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/esearch_result.rb +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_data.rb +90 -11
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_parser/parser_utils.rb +14 -23
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_parser.rb +41 -26
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/response_reader.rb +16 -21
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/scram_authenticator.rb +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/search_result.rb +11 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sequence_set.rb +620 -312
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/uidplus_data.rb +2 -63
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap.rb +279 -162
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/net-imap.gemspec +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/rdoc.rake +1 -18
- data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2/LICENSE.txt → net-protocol-0.3.0/BSDL} +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.3.0/COPYING +56 -0
- data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2 → net-protocol-0.3.0}/lib/net/protocol.rb +58 -4
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/CHANGELOG.md +54 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/utils.rb +3 -3
- data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/specifications/{net-imap-0.5.15.gemspec → net-imap-0.6.6.gemspec} +4 -4
- data/vendor/bundle/ruby/3.4.0/specifications/{net-protocol-0.2.2.gemspec → net-protocol-0.3.0.gemspec} +5 -5
- data/vendor/bundle/ruby/3.4.0/specifications/{rack-3.2.6.gemspec → rack-3.2.7.gemspec} +3 -3
- data/views/tdiary.rconf +2 -0
- metadata +128 -133
- data/misc/plugin/amp.rb +0 -118
- data/vendor/bundle/ruby/3.4.0/cache/net-imap-0.5.15.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/net-protocol-0.2.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rack-3.2.6.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/Rakefile +0 -13
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/data_lite.rb +0 -226
- data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/errors.rb +0 -118
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Gemfile +0 -7
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Rakefile +0 -10
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/console +0 -14
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/setup +0 -8
- data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/net-protocol.gemspec +0 -33
- data/views/amp.rhtml +0 -34
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/BSDL +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/COPYING +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/docs/styles.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/authenticators.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/config/attr_type_coercion.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/deprecated_client_options.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/fetch_data.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/flags.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/anonymous_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/authentication_exchange.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/authenticators.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/client_adapter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/cram_md5_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/digest_md5_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/external_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/gs2_header.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/login_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/oauthbearer_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/plain_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/protocol_adapters.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/scram_algorithm.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/stringprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl/xoauth2_authenticator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/sasl_adapter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/nameprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/saslprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/saslprep_tables.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/tables.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep/trace.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/stringprep.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/lib/net/imap/vanished_data.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/benchmarks.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/rfcs.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/saslprep.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/rakelib/string_prep_tables_generator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-imap-0.5.15 → net-imap-0.6.6}/sample/net-imap.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{net-protocol-0.2.2 → net-protocol-0.3.0}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/CONTRIBUTING.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/SPEC.rdoc +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/abstract/handler.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/abstract/request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/auth/basic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/bad_request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/body_proxy.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/builder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/cascade.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/common_logger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/conditional_get.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/config.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/constants.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/content_length.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/content_type.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/deflater.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/directory.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/etag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/events.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/files.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/head.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/headers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/lint.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/media_type.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/method_override.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mime.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock_request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/mock_response.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/generator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart/uploaded_file.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/multipart.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/null_logger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/query_parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/recursive.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/reloader.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/request.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/response.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/rewindable_input.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/runtime.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/sendfile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/show_exceptions.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/show_status.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/static.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/tempfile_reaper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack/urlmap.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rack-3.2.6 → rack-3.2.7}/lib/rack.rb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0152dd908530b141b305017532d2fdbee7d61cacb8eeb955e7da169504b68604
|
|
4
|
+
data.tar.gz: 0ad54ddca02502bae29ba3d69cf7b972c6ecd5c4cec62800f21600f98d016a62
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8d1655ec19c3d0079bd353cbd83593d5ecacbe15d75087daf08d9ecc5b747e4fc5ec61297dbd3a5722dcadc89c6a85745f2a6e7497cf0ac390daf3cd9b4ca6dd
|
|
7
|
+
data.tar.gz: 8192a8f3fe135f261f3cb942addf64bf6aabc8b9300fe6102e71053105c87f6ff73457e7e98ca9d60a677289011399327552a6d433951e30fa8fc53256854519
|
data/ChangeLog
CHANGED
data/Gemfile
CHANGED
|
@@ -12,6 +12,7 @@ gem 'mail'
|
|
|
12
12
|
gem 'rake'
|
|
13
13
|
gem 'cgi'
|
|
14
14
|
gem 'pstore'
|
|
15
|
+
gem 'logger'
|
|
15
16
|
|
|
16
17
|
group :development do
|
|
17
18
|
gem 'pit', require: false
|
|
@@ -24,7 +25,7 @@ group :development do
|
|
|
24
25
|
gem 'rspec'
|
|
25
26
|
gem 'capybara', require: 'capybara/rspec'
|
|
26
27
|
gem 'date', '>= 3.1.1' # for compatibility of capybara
|
|
27
|
-
gem '
|
|
28
|
+
gem 'cuprite'
|
|
28
29
|
gem 'launchy'
|
|
29
30
|
gem 'sequel'
|
|
30
31
|
gem 'sqlite3'
|
data/Gemfile.lock
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
GIT
|
|
2
2
|
remote: https://github.com/tdiary/tdiary-contrib.git
|
|
3
|
-
revision:
|
|
3
|
+
revision: 1c265fc47175dbe7573b166fc865b5893036c771
|
|
4
4
|
specs:
|
|
5
|
-
tdiary-contrib (5.
|
|
5
|
+
tdiary-contrib (5.6.0)
|
|
6
6
|
coderay
|
|
7
7
|
holiday_japan
|
|
8
8
|
pushbullet_ruby
|
|
@@ -69,17 +69,24 @@ GEM
|
|
|
69
69
|
commonmarker (2.9.0-x86_64-linux-musl)
|
|
70
70
|
concurrent-ruby (1.3.8)
|
|
71
71
|
connection_pool (3.0.2)
|
|
72
|
-
|
|
72
|
+
cuprite (0.18)
|
|
73
|
+
capybara (~> 3.0)
|
|
74
|
+
ferrum (~> 0.18.0)
|
|
75
|
+
dalli (5.1.1)
|
|
73
76
|
logger
|
|
74
77
|
date (3.5.1)
|
|
75
78
|
diff-lcs (1.6.2)
|
|
76
|
-
docile (1.4.1)
|
|
77
79
|
drb (2.2.3)
|
|
78
80
|
emot (0.0.4)
|
|
79
81
|
thor
|
|
80
82
|
faraday (0.17.6)
|
|
81
83
|
multipart-post (>= 1.2, < 3)
|
|
82
84
|
fastimage (2.4.1)
|
|
85
|
+
ferrum (0.18.0)
|
|
86
|
+
addressable (~> 2.5)
|
|
87
|
+
base64 (~> 0.2)
|
|
88
|
+
concurrent-ruby (~> 1.1)
|
|
89
|
+
websocket-driver (~> 0.7)
|
|
83
90
|
hashie (5.1.0)
|
|
84
91
|
logger
|
|
85
92
|
hikidoc (0.1.1)
|
|
@@ -100,12 +107,12 @@ GEM
|
|
|
100
107
|
net-imap
|
|
101
108
|
net-pop
|
|
102
109
|
net-smtp
|
|
103
|
-
matrix (0.4.
|
|
110
|
+
matrix (0.4.3)
|
|
104
111
|
memcachier (0.0.2)
|
|
105
112
|
mime-types (3.7.0)
|
|
106
113
|
logger
|
|
107
114
|
mime-types-data (~> 3.2025, >= 3.2025.0507)
|
|
108
|
-
mime-types-data (3.
|
|
115
|
+
mime-types-data (3.2026.0701)
|
|
109
116
|
mini_mime (1.1.5)
|
|
110
117
|
mini_portile2 (2.8.9)
|
|
111
118
|
minitest (6.0.6)
|
|
@@ -122,12 +129,12 @@ GEM
|
|
|
122
129
|
bigdecimal (>= 3.1, < 5)
|
|
123
130
|
multipart-post (2.4.1)
|
|
124
131
|
mutex_m (0.3.0)
|
|
125
|
-
net-imap (0.
|
|
132
|
+
net-imap (0.6.6)
|
|
126
133
|
date
|
|
127
134
|
net-protocol
|
|
128
135
|
net-pop (0.1.2)
|
|
129
136
|
net-protocol
|
|
130
|
-
net-protocol (0.
|
|
137
|
+
net-protocol (0.3.0)
|
|
131
138
|
timeout
|
|
132
139
|
net-smtp (0.5.1)
|
|
133
140
|
net-protocol
|
|
@@ -184,7 +191,7 @@ GEM
|
|
|
184
191
|
faraday (>= 0.13.0, < 1.0)
|
|
185
192
|
mime-types
|
|
186
193
|
racc (1.8.1)
|
|
187
|
-
rack (3.2.
|
|
194
|
+
rack (3.2.7)
|
|
188
195
|
rack-protection (4.2.1)
|
|
189
196
|
base64 (>= 0.1.0)
|
|
190
197
|
logger (>= 1.6.0)
|
|
@@ -206,7 +213,7 @@ GEM
|
|
|
206
213
|
rdtool (0.6.39)
|
|
207
214
|
nkf (>= 0.1, < 1.0)
|
|
208
215
|
redcarpet (3.6.1)
|
|
209
|
-
regexp_parser (2.
|
|
216
|
+
regexp_parser (2.12.0)
|
|
210
217
|
rexml (3.4.4)
|
|
211
218
|
rspec (3.13.2)
|
|
212
219
|
rspec-core (~> 3.13.0)
|
|
@@ -222,44 +229,32 @@ GEM
|
|
|
222
229
|
rspec-support (~> 3.13.0)
|
|
223
230
|
rspec-support (3.13.6)
|
|
224
231
|
ruby2_keywords (0.0.5)
|
|
225
|
-
rubyzip (2.4.1)
|
|
226
232
|
securerandom (0.4.1)
|
|
227
|
-
|
|
228
|
-
base64 (~> 0.2)
|
|
229
|
-
logger (~> 1.4)
|
|
230
|
-
rexml (~> 3.2, >= 3.2.5)
|
|
231
|
-
rubyzip (>= 1.2.2, < 3.0)
|
|
232
|
-
websocket (~> 1.0)
|
|
233
|
-
sequel (5.106.0)
|
|
233
|
+
sequel (5.108.0)
|
|
234
234
|
bigdecimal
|
|
235
|
-
simplecov (
|
|
236
|
-
docile (~> 1.1)
|
|
237
|
-
simplecov-html (~> 0.11)
|
|
238
|
-
simplecov_json_formatter (~> 0.1)
|
|
239
|
-
simplecov-html (0.13.1)
|
|
240
|
-
simplecov_json_formatter (0.1.4)
|
|
235
|
+
simplecov (1.3.1)
|
|
241
236
|
snaky_hash (2.0.7)
|
|
242
237
|
hashie (>= 0.1.0, < 6)
|
|
243
238
|
version_gem (~> 1.1, >= 1.1.14)
|
|
244
|
-
sqlite3 (2.
|
|
239
|
+
sqlite3 (2.9.6)
|
|
245
240
|
mini_portile2 (~> 2.8.0)
|
|
246
|
-
sqlite3 (2.
|
|
247
|
-
sqlite3 (2.
|
|
248
|
-
sqlite3 (2.
|
|
249
|
-
sqlite3 (2.
|
|
250
|
-
sqlite3 (2.
|
|
251
|
-
sqlite3 (2.
|
|
252
|
-
sqlite3 (2.
|
|
253
|
-
sqlite3 (2.
|
|
254
|
-
sqlite3 (2.
|
|
255
|
-
sqlite3 (2.
|
|
256
|
-
tdiary (5.
|
|
257
|
-
|
|
241
|
+
sqlite3 (2.9.6-aarch64-linux-gnu)
|
|
242
|
+
sqlite3 (2.9.6-aarch64-linux-musl)
|
|
243
|
+
sqlite3 (2.9.6-arm-linux-gnu)
|
|
244
|
+
sqlite3 (2.9.6-arm-linux-musl)
|
|
245
|
+
sqlite3 (2.9.6-arm64-darwin)
|
|
246
|
+
sqlite3 (2.9.6-x86-linux-gnu)
|
|
247
|
+
sqlite3 (2.9.6-x86-linux-musl)
|
|
248
|
+
sqlite3 (2.9.6-x86_64-darwin)
|
|
249
|
+
sqlite3 (2.9.6-x86_64-linux-gnu)
|
|
250
|
+
sqlite3 (2.9.6-x86_64-linux-musl)
|
|
251
|
+
tdiary (5.6.0)
|
|
252
|
+
cgi
|
|
258
253
|
emot
|
|
259
254
|
fastimage
|
|
260
255
|
hikidoc
|
|
261
256
|
mail
|
|
262
|
-
|
|
257
|
+
pstore
|
|
263
258
|
rack
|
|
264
259
|
rake
|
|
265
260
|
rexml
|
|
@@ -285,7 +280,10 @@ GEM
|
|
|
285
280
|
unf_ext (0.0.9.1)
|
|
286
281
|
version_gem (1.1.14)
|
|
287
282
|
webrick (1.9.2)
|
|
288
|
-
websocket (
|
|
283
|
+
websocket-driver (0.8.2)
|
|
284
|
+
base64
|
|
285
|
+
websocket-extensions (>= 0.1.0)
|
|
286
|
+
websocket-extensions (0.1.5)
|
|
289
287
|
xpath (3.2.0)
|
|
290
288
|
nokogiri (~> 1.8)
|
|
291
289
|
|
|
@@ -311,12 +309,14 @@ DEPENDENCIES
|
|
|
311
309
|
capybara
|
|
312
310
|
cgi
|
|
313
311
|
connection_pool
|
|
312
|
+
cuprite
|
|
314
313
|
dalli
|
|
315
314
|
date (>= 3.1.1)
|
|
316
315
|
emot
|
|
317
316
|
fastimage
|
|
318
317
|
hikidoc
|
|
319
318
|
launchy
|
|
319
|
+
logger
|
|
320
320
|
mail
|
|
321
321
|
memcachier
|
|
322
322
|
mime-types
|
|
@@ -334,7 +334,6 @@ DEPENDENCIES
|
|
|
334
334
|
redcarpet
|
|
335
335
|
rexml
|
|
336
336
|
rspec
|
|
337
|
-
selenium-webdriver (< 4.45)
|
|
338
337
|
sequel
|
|
339
338
|
simplecov
|
|
340
339
|
sqlite3
|
data/doc/HOWTO-make-theme.md
CHANGED
|
@@ -36,7 +36,7 @@ tDiaryテーマには、以下のような基本的な約束事があります
|
|
|
36
36
|
テーマ・ギャラリー用の説明
|
|
37
37
|
-------------
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
テーマ集に登録されたテーマは、[テーマ・ギャラリー](https://github.com/tdiary/tdiary-theme)で一覧できます。テーマ集のテーマには、作者名やコメントを一定のフォーマットで書いたREADMEが付いています。
|
|
40
40
|
|
|
41
41
|
最初からこのフォーマットで書いておくと、テーマ集に入った時に見栄えがします。以下にそのフォーマットについて解説します。
|
|
42
42
|
|
|
@@ -50,7 +50,7 @@ Comment: 四つ葉のクローバーの葉をあしらった、シンプルで
|
|
|
50
50
|
|
|
51
51
|
この説明は、READMEの最初の行から記述します。「キー」と「値」を「: 」で挟んだ形式で、1項目1行で書きます。日本語を書くときは、文字コードをUTF-8にして下さい。英語の説明があれば、README.enというファイルにしてください。
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
各項目の意味は以下のとおりです。
|
|
54
54
|
|
|
55
55
|
- Title: テーマのタイトルです。ファイル名だけでは味気ないと思ったら、この項目を書いてください。なくてもかまいません。
|
|
56
56
|
- Author: 作者名
|
|
@@ -63,5 +63,5 @@ Comment: 四つ葉のクローバーの葉をあしらった、シンプルで
|
|
|
63
63
|
テーマ・テストベンチ
|
|
64
64
|
----------
|
|
65
65
|
|
|
66
|
-
テーマの見え方を確認するための、[テストベンチ](
|
|
66
|
+
テーマの見え方を確認するための、[テストベンチ](https://tdiary.org/tdiary-theme/themebench.html)というページがあります。こちらでは様々なエレメントの見え方や、代表的なプラグインの表示を確認することができます。テーマ作成時に利用してください。
|
|
67
67
|
|
data/doc/UPGRADE.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
このドキュメントについて
|
|
5
5
|
--
|
|
6
6
|
|
|
7
|
-
tDiaryは、バージョン番号が「X.Y.Z」の形式のものがリリースバージョン、その後ろに「.YYYYMMDD」形式で日付が入っているものが開発バージョンとなっています。このドキュメントでは、リリースバージョン間の変更点について解説します。開発バージョンを使っている場合は、
|
|
7
|
+
tDiaryは、バージョン番号が「X.Y.Z」の形式のものがリリースバージョン、その後ろに「.YYYYMMDD」形式で日付が入っているものが開発バージョンとなっています。このドキュメントでは、リリースバージョン間の変更点について解説します。開発バージョンを使っている場合は、[GitHub Releases](https://github.com/tdiary/tdiary-core/releases)を参照してください。
|
|
8
8
|
|
|
9
9
|
4.0と5.0の違い
|
|
10
10
|
-----
|
data/js/draft.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* draft.js: save draft data to Web Storage automatically
|
|
3
|
-
*
|
|
3
|
+
* and keep a copy of them on the server
|
|
4
|
+
*
|
|
4
5
|
* Copyright (c) MATSUOKA Kohei <http://www.machu.jp/>
|
|
5
6
|
* Distributed under the GPL2 or any later version.
|
|
6
7
|
*/
|
|
@@ -8,70 +9,122 @@ $(function() {
|
|
|
8
9
|
|
|
9
10
|
if (!localStorage) { return; }
|
|
10
11
|
|
|
11
|
-
var Draft = function(storage, text) {
|
|
12
|
+
var Draft = function(storage, text, server) {
|
|
12
13
|
// 保存先のストレージ
|
|
13
14
|
this.storage = storage;
|
|
14
15
|
// 下書きの保存件数
|
|
15
|
-
this.maxCount =
|
|
16
|
+
this.maxCount = server.max;
|
|
16
17
|
// 下書き一覧
|
|
17
18
|
this.items = [];
|
|
18
|
-
|
|
19
|
-
this.
|
|
19
|
+
// このページで編集している下書きの ID
|
|
20
|
+
this.current = null;
|
|
21
|
+
// 最後に保存したテキストエリアの内容
|
|
22
|
+
this.text = text;
|
|
23
|
+
// サーバーにある下書きの ID と更新日時
|
|
24
|
+
this.synced = {};
|
|
25
|
+
|
|
26
|
+
this.initialize(text, server);
|
|
20
27
|
};
|
|
21
28
|
|
|
22
29
|
Draft.prototype = {
|
|
23
|
-
//
|
|
24
|
-
initialize: function(text) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
// ローカルストレージの下書きにサーバーの下書きを統合する
|
|
31
|
+
initialize: function(text, server) {
|
|
32
|
+
var items = this.storage.drafts ? JSON.parse(this.storage.drafts) : new Array();
|
|
33
|
+
var synced = this.synced;
|
|
34
|
+
$.each(items, function(index, item) {
|
|
35
|
+
if (!item.id) { item.id = DraftUtils.newId(); }
|
|
36
|
+
});
|
|
37
|
+
$.each(server.drafts, function(index, remote) {
|
|
38
|
+
synced[remote.id] = remote.date;
|
|
39
|
+
var local = DraftUtils.find(items, remote.id);
|
|
40
|
+
if (!local) {
|
|
41
|
+
items.push(remote);
|
|
42
|
+
} else if (local.date < remote.date) {
|
|
43
|
+
local.date = remote.date;
|
|
44
|
+
local.value = remote.value;
|
|
31
45
|
}
|
|
32
|
-
return true;
|
|
33
46
|
});
|
|
34
|
-
|
|
47
|
+
// 空の下書きと、日記として投稿済みの下書きを削除する
|
|
48
|
+
this.items = $.grep(items, function(item) {
|
|
49
|
+
return typeof item.value == "string" && DraftUtils.trim(item.value) != "" &&
|
|
50
|
+
$.inArray(item.id, server.deleted) < 0;
|
|
51
|
+
});
|
|
52
|
+
this.truncate();
|
|
53
|
+
// テキストエリアと同じ下書きがあれば、それを続けて編集する
|
|
54
|
+
// 改行と空白文字を無視して比較(プレビュー時に末尾へ改行が付加されるため)
|
|
55
|
+
var trimmed = DraftUtils.trim(text);
|
|
56
|
+
var same = $.grep(this.items, function(item) {
|
|
57
|
+
return DraftUtils.trim(item.value) == trimmed;
|
|
58
|
+
});
|
|
59
|
+
if (trimmed != "" && same.length > 0) {
|
|
60
|
+
this.current = same.pop().id;
|
|
61
|
+
}
|
|
62
|
+
this.store();
|
|
35
63
|
// console.log("Draft.initialized");
|
|
36
64
|
},
|
|
37
65
|
|
|
38
|
-
//
|
|
39
|
-
//
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (this.items.length > this.maxCount) {
|
|
51
|
-
this.items.shift();
|
|
66
|
+
// 編集している下書きを更新する
|
|
67
|
+
// テキストエリアの内容が変わっていなければ何もしない
|
|
68
|
+
save: function(text) {
|
|
69
|
+
if (text == this.text) { return; }
|
|
70
|
+
this.text = text;
|
|
71
|
+
if (DraftUtils.trim(text) == "") { return; }
|
|
72
|
+
var item = DraftUtils.find(this.items, this.current);
|
|
73
|
+
if (item) {
|
|
74
|
+
this.items.splice($.inArray(item, this.items), 1);
|
|
75
|
+
} else {
|
|
76
|
+
item = { id: DraftUtils.newId() };
|
|
77
|
+
this.current = item.id;
|
|
52
78
|
}
|
|
53
|
-
|
|
79
|
+
item.date = new Date().getTime();
|
|
80
|
+
item.value = text;
|
|
81
|
+
this.items.push(item);
|
|
82
|
+
this.truncate();
|
|
83
|
+
this.store();
|
|
54
84
|
},
|
|
55
85
|
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.
|
|
86
|
+
// 指定した下書きを読み込み、それを続けて編集する
|
|
87
|
+
load: function(id) {
|
|
88
|
+
var item = DraftUtils.find(this.items, id);
|
|
89
|
+
if (!item) { return null; }
|
|
90
|
+
this.current = item.id;
|
|
91
|
+
this.text = item.value;
|
|
61
92
|
return item.value;
|
|
62
93
|
},
|
|
63
94
|
|
|
64
|
-
//
|
|
95
|
+
// サーバーにまだ無い版の下書き一覧を返す
|
|
96
|
+
pending: function() {
|
|
97
|
+
var synced = this.synced;
|
|
98
|
+
return $.grep(this.items, function(item) {
|
|
99
|
+
return !(synced[item.id] >= item.date);
|
|
100
|
+
});
|
|
101
|
+
},
|
|
102
|
+
|
|
103
|
+
// サーバーへ保存した下書きを記録する
|
|
104
|
+
markSynced: function(items) {
|
|
105
|
+
var synced = this.synced;
|
|
106
|
+
$.each(items, function(index, item) {
|
|
107
|
+
synced[item.id] = item.date;
|
|
108
|
+
});
|
|
109
|
+
},
|
|
110
|
+
|
|
111
|
+
// 最大でmaxCount件数の履歴を保持
|
|
112
|
+
truncate: function() {
|
|
113
|
+
this.items.sort(function(a, b) { return a.date - b.date; });
|
|
114
|
+
this.items = this.items.slice(-this.maxCount);
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
store: function() {
|
|
118
|
+
this.storage.drafts = JSON.stringify(this.items);
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
// 下書きの ID とタイトルの一覧を返す(表示用)
|
|
65
122
|
// タイトルは textarea の先頭1行目 + 更新日時
|
|
66
123
|
titles: function() {
|
|
67
124
|
return $.map(this.items, function(item) {
|
|
68
|
-
var date = new Date(item.date);
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (item.value && typeof item.value == "string") {
|
|
72
|
-
title = item.value.match(/.*/)[0];
|
|
73
|
-
}
|
|
74
|
-
return title + " (" + date + ")";
|
|
125
|
+
var date = DraftUtils.dateToString(new Date(item.date));
|
|
126
|
+
var title = item.value.match(/.*/)[0] || "No-Name";
|
|
127
|
+
return { id: item.id, title: title + " (" + date + ")" };
|
|
75
128
|
});
|
|
76
129
|
}
|
|
77
130
|
|
|
@@ -99,6 +152,13 @@ var DraftUtils = {
|
|
|
99
152
|
// 文字列から改行と空白文字を取り除く
|
|
100
153
|
trim: function(str) {
|
|
101
154
|
return str.replace(/\s+/g, "");
|
|
155
|
+
},
|
|
156
|
+
// 下書きの ID を作る(サーバーが受け付けるのは英小文字と数字のみ)
|
|
157
|
+
newId: function() {
|
|
158
|
+
return new Date().getTime().toString(36) + Math.random().toString(36).slice(2, 10);
|
|
159
|
+
},
|
|
160
|
+
find: function(items, id) {
|
|
161
|
+
return $.grep(items, function(item) { return item.id == id; })[0];
|
|
102
162
|
}
|
|
103
163
|
};
|
|
104
164
|
|
|
@@ -108,12 +168,17 @@ var DraftUtils = {
|
|
|
108
168
|
|
|
109
169
|
// 保存対象のテキストエリア
|
|
110
170
|
var textarea = $("[name=body]");
|
|
171
|
+
// 日記の更新フォーム
|
|
172
|
+
var form = textarea.closest("form");
|
|
111
173
|
// 下書き一覧を表示するセレクトボックス
|
|
112
174
|
var select = $("[name=drafts]");
|
|
113
175
|
// 自動保存の間隔(ミリ秒)
|
|
114
176
|
var autoSaveInterval = 5 * 1000;
|
|
177
|
+
// サーバーへ保存する間隔(ミリ秒)
|
|
178
|
+
var syncInterval = $tDiary.plugin.draft.interval * 1000;
|
|
115
179
|
|
|
116
|
-
var draft = new Draft(localStorage, textarea.val());
|
|
180
|
+
var draft = new Draft(localStorage, textarea.val(), $tDiary.plugin.draft.server);
|
|
181
|
+
var syncing = false;
|
|
117
182
|
|
|
118
183
|
// 下書き保存
|
|
119
184
|
saveDraft = function() {
|
|
@@ -122,26 +187,61 @@ saveDraft = function() {
|
|
|
122
187
|
};
|
|
123
188
|
// 下書き読み込み
|
|
124
189
|
loadDraft = function() {
|
|
125
|
-
|
|
190
|
+
var value = draft.load(select.val());
|
|
191
|
+
if (value != null) {
|
|
192
|
+
textarea.val(value);
|
|
193
|
+
}
|
|
126
194
|
showSelectForm(false);
|
|
127
195
|
};
|
|
196
|
+
// サーバーに無い下書きをサーバーへ保存
|
|
197
|
+
syncDraft = function(keepalive) {
|
|
198
|
+
var items = $.map(draft.pending(), function(item) {
|
|
199
|
+
return { id: item.id, date: item.date, value: item.value };
|
|
200
|
+
});
|
|
201
|
+
if (syncing || items.length == 0) { return; }
|
|
202
|
+
var params = new URLSearchParams();
|
|
203
|
+
params.append("plugin", "draft");
|
|
204
|
+
params.append("plugin_draft_sync", JSON.stringify(items));
|
|
205
|
+
form.find("[name=csrf_protection_key]").each(function() {
|
|
206
|
+
params.append("csrf_protection_key", $(this).val());
|
|
207
|
+
});
|
|
208
|
+
syncing = true;
|
|
209
|
+
fetch(form.attr("action"), { method: "POST", body: params, keepalive: keepalive })
|
|
210
|
+
.then(function(response) {
|
|
211
|
+
if (response.ok) { draft.markSynced(items); }
|
|
212
|
+
}, function() {})
|
|
213
|
+
.then(function() { syncing = false; });
|
|
214
|
+
};
|
|
128
215
|
// 下書き選択用のセレクトボックスを描画
|
|
129
|
-
showSelectForm = function(
|
|
130
|
-
var
|
|
216
|
+
showSelectForm = function(keepSelection) {
|
|
217
|
+
var selected = select.val();
|
|
131
218
|
select.empty();
|
|
132
|
-
$.each(draft.titles(), function(i,
|
|
133
|
-
select.append($("<option/>").attr("value",
|
|
134
|
-
select.val(i);
|
|
219
|
+
$.each(draft.titles(), function(i, item) {
|
|
220
|
+
select.append($("<option/>").attr("value", item.id).text(item.title));
|
|
135
221
|
});
|
|
136
|
-
if (
|
|
137
|
-
select.val(
|
|
222
|
+
if (!(keepSelection && selected)) {
|
|
223
|
+
selected = draft.current || select.children().last().val();
|
|
138
224
|
}
|
|
225
|
+
select.val(selected);
|
|
139
226
|
};
|
|
140
227
|
|
|
141
228
|
// DOMイベント設定
|
|
142
229
|
$("#draft_load").click(loadDraft);
|
|
143
230
|
setInterval(saveDraft, autoSaveInterval);
|
|
231
|
+
setInterval(function() { syncDraft(false); }, syncInterval);
|
|
144
232
|
textarea.change(saveDraft);
|
|
233
|
+
// タブを閉じる・切り替える前に保存する
|
|
234
|
+
$(document).on("visibilitychange", function() {
|
|
235
|
+
if (document.visibilityState == "hidden") {
|
|
236
|
+
saveDraft();
|
|
237
|
+
syncDraft(true);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
// 日記として投稿する下書きをサーバーに知らせる
|
|
241
|
+
form.submit(function() {
|
|
242
|
+
saveDraft();
|
|
243
|
+
$("[name=plugin_draft_id]").val(draft.current || "");
|
|
244
|
+
});
|
|
145
245
|
|
|
146
246
|
showSelectForm(false);
|
|
147
247
|
// console.log("ready");
|