From de4ac4857b82290983293c99f1c7866659a2ccc8 Mon Sep 17 00:00:00 2001 From: Aidan Cornelius-Bell Date: Sun, 15 Sep 2024 07:48:23 +0930 Subject: [PATCH] stylesheet tweaks; generators with templates --- .DS_Store | Bin 6148 -> 8196 bytes Gemfile | 2 + Gemfile.lock | 8 ++ app/.DS_Store | Bin 6148 -> 6148 bytes app/{views => assets}/.DS_Store | Bin 6148 -> 6148 bytes .../concerns => assets/images}/.DS_Store | Bin app/assets/images/logo-192.png | Bin 10472 -> 71120 bytes app/assets/images/porter.svg | 93 +++++++++++++++ app/assets/stylesheets/application.css | 28 ++++- app/controllers/api_keys_controller.rb | 4 +- .../concerns/admin_authenticatable.rb | 2 +- app/controllers/posts_controller.rb | 107 +++++++++++++++++- app/models/concerns/url_title_fetchable.rb | 38 +++++++ app/models/post.rb | 22 +++- app/views/posts/importer.html.erb | 26 +++++ app/views/posts/index.html.erb | 2 + app/views/posts/show.html.erb | 2 +- app/views/pubview/index.html.erb | 11 +- app/views/pubview/post.html.erb | 3 + config/application.rb | 7 +- config/routes.rb | 3 + lib/templates/erb/scaffold/_edit.html.erb.tt | 12 ++ lib/templates/erb/scaffold/_form.html.erb.tt | 36 ++++++ lib/templates/erb/scaffold/_index.html.erb.tt | 41 +++++++ lib/templates/erb/scaffold/_new.html.erb.tt | 11 ++ lib/templates/erb/scaffold/_show.html.erb.tt | 16 +++ public/apple-touch-icon.png | Bin 12376 -> 17724 bytes public/favicon.ico | Bin 5238 -> 5238 bytes public/icon-192-maskable.png | Bin 13723 -> 19290 bytes public/icon-192.png | Bin 17285 -> 23440 bytes public/icon-512-maskable.png | Bin 51534 -> 60161 bytes public/icon-512.png | Bin 63652 -> 71120 bytes public/icon.png | Bin 10472 -> 23440 bytes public/logo-192.png | Bin 10472 -> 23440 bytes 34 files changed, 461 insertions(+), 13 deletions(-) copy app/{views => assets}/.DS_Store (97%) copy app/{controllers/concerns => assets/images}/.DS_Store (100%) create mode 100644 app/assets/images/porter.svg create mode 100644 app/models/concerns/url_title_fetchable.rb create mode 100644 app/views/posts/importer.html.erb create mode 100644 lib/templates/erb/scaffold/_edit.html.erb.tt create mode 100644 lib/templates/erb/scaffold/_form.html.erb.tt create mode 100644 lib/templates/erb/scaffold/_index.html.erb.tt create mode 100644 lib/templates/erb/scaffold/_new.html.erb.tt create mode 100644 lib/templates/erb/scaffold/_show.html.erb.tt diff --git a/.DS_Store b/.DS_Store index 285cf43acff88b8c7a8338bc42d97942f0a199bb..92ecf43fe5720d707c85feca2ddac237312cf676 100644 GIT binary patch literal 8196 zcmeHMTWl3Y7@lui+TG>SX(_NAP*1D~)B-K{t2y+7T&;3iS_*hL=j^tuYhL0NbOAX!Q3 zFj1L{0?A|~Q;{5zk}Q-UT}et;L{|(*chV=LcBx2?NGaVJqRR)Oo)O(p5cW>*PlnAI zQc}iwj6jUQ^$3W&dj-p~AvV-+UVVShGmp8fpV@4nY!KcGGg+>z5V2TAu0@t(4zv<~wd$$W2hxYU;dGD$t_^MUSP05y)H7A;q z$JZ^V^2!yfPn^)ySq;lJ?9Lo^23_xQF$>xsqJ4x-m-Vsy6qT--ljE1#wXCG0(U&nXVNeumfPvrfL~ zWCLrnO$0gE7|(|L)n7WIZRB7v|C6Ut_UfH;vCbCz&ZnJ5I(-0UMoyPqt|5T+#u-%eP?4`w(BvutZ8(d z&1FmJ*xbtYGmB#67(30LXJ^|J)Aeat>#7uhBD75kcf!+u~tvtQU1_A3SUcI&7rD9fv5>!g0WN^Iv-WOaeQP$i!8Dp_qzG^rF>TnVfCvP6qU@xv=* zwK1_uQ#oX1t-fBPNaB^FbLSYdH*V5(&O{_@@=dLYc9o)mtN)&+Z?gB9bZFB5Ig;%$5|j*Q#OG?WtO#*?v>F1U{84v@Y~;A>st z+QbM{NVOsE{~eQm|DV`7*2W0L2;3A1pt3#P-bz!MZ2J^tr5*vm!?3raB77 zhL*KD3e}cI2098RmPV7`3OH;&CuYgGv0)+eVs;J=L1v(KAQ0dN60RVVHWq$op3E=f Y2(pTSk%55)L^DC`0*h^q=b6I{09l|Ic>n+a diff --git a/Gemfile b/Gemfile index 51d9fad..895f6f5 100644 --- a/Gemfile +++ b/Gemfile @@ -16,6 +16,8 @@ gem "kaminari" gem "redcarpet" #syntax gem "rouge" +#html crawling +gem "httparty" # Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis] # gem "kredis" diff --git a/Gemfile.lock b/Gemfile.lock index a2e4ba8..bc77713 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,6 +95,7 @@ GEM concurrent-ruby (1.3.4) connection_pool (2.4.1) crass (1.0.6) + csv (3.3.0) date (3.3.4) debug (1.9.2) irb (~> 1.10) @@ -109,6 +110,10 @@ GEM erubi (1.13.0) globalid (1.2.1) activesupport (>= 6.1) + httparty (0.22.0) + csv + mini_mime (>= 1.0.0) + multi_xml (>= 0.5.2) i18n (1.14.5) concurrent-ruby (~> 1.0) io-console (0.7.2) @@ -143,6 +148,8 @@ GEM mini_mime (1.1.5) minitest (5.25.1) msgpack (1.7.2) + multi_xml (0.7.1) + bigdecimal (~> 3.1) mysql2 (0.5.6) net-imap (0.4.16) date @@ -308,6 +315,7 @@ DEPENDENCIES capybara debug devise + httparty kaminari mysql2 (~> 0.5) puma (>= 5.0) diff --git a/app/.DS_Store b/app/.DS_Store index 3ced85bb24c192da38038eb45d71c80317977d29..3031a206d50c35c24d17bc3f6d647c4cb87390e5 100644 GIT binary patch delta 14 VcmZoMXffEJ!pO+DS(Wj=7yuv{1P%ZI delta 14 VcmZoMXffEJ!pO+5S(Wj=7yuv>1PuTH diff --git a/app/views/.DS_Store b/app/assets/.DS_Store similarity index 97% copy from app/views/.DS_Store copy to app/assets/.DS_Store index 21c52c5c7010b3404f459a2a3cdc3a86d6e5d196..893ce86f37176531c698d5acc0dd0e12bc2c753c 100644 GIT binary patch delta 80 zcmZoMXfc@JFUrWkzyQPo3=F9Z#S9rhGL@lZ;z4y4kOVhSsDz=CAqQEKp*St2I5{al UKZkMSK{xh^7lbymbNuB80G4YLpa1{> delta 93 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 literal 10472 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 SxBYX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 980697d..f4e73da 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -183,7 +183,6 @@ select { font-size: 16px; } -/* Style for focus state */ input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, @@ -194,7 +193,6 @@ select:focus { outline: none; } -/* Style for submit button */ input[type="submit"] { padding: 14px 20px; margin: 8px 0; @@ -204,13 +202,16 @@ input[type="submit"] { font-size: 16px; } -/* Style for labels */ label { font-weight: bold; margin-bottom: 5px; display: block; } +.subheading { + margin-top: -25px; +} + .post { background-color: var(--post-bg); padding: 2em; @@ -246,6 +247,12 @@ footer p { font-size: .8rem; } +.porter { + max-width: 170px; + float: right; + padding: 20px; +} + .logo { max-width: 48px; float: right; @@ -300,6 +307,19 @@ ul .pinned::before { white-space: nowrap; } +.notice { + background: var(--post-bg); + border-radius: 4px; + padding: 1px 1.5em; + margin: 10px auto; + max-width: 290px; + color: var(--accent-c); +} + +.notice h3 { + color: var(--accent-a); +} + .filter-buttons { margin-bottom: 20px; text-align: center; @@ -334,7 +354,7 @@ ul .pinned::before { .bookmark-comment { font-style: italic; - color: var(--code-text); + color: var(--accent-b); font-size: 0.9em; } diff --git a/app/controllers/api_keys_controller.rb b/app/controllers/api_keys_controller.rb index d1898f7..012a0f5 100644 --- a/app/controllers/api_keys_controller.rb +++ b/app/controllers/api_keys_controller.rb @@ -1,7 +1,7 @@ class ApiKeysController < ApplicationController before_action :set_api_key, only: [:show, :destroy] - before_action :authenticate_user! # Assuming you're using Devise for authentication - before_action :authorize_admin # You'll need to implement this method + #before_action :authenticate_user! + include AdminAuthenticatable def index @api_keys = ApiKey.all diff --git a/app/controllers/concerns/admin_authenticatable.rb b/app/controllers/concerns/admin_authenticatable.rb index ebe9da5..2397948 100644 --- a/app/controllers/concerns/admin_authenticatable.rb +++ b/app/controllers/concerns/admin_authenticatable.rb @@ -9,7 +9,7 @@ module AdminAuthenticatable def authenticate_admin! unless current_user&.admin? - flash[:alert] = "You are not authorized to access this page." + flash[:alert] = "You are not authorised to access this page. If you have an account please log in first." redirect_to root_path end end diff --git a/app/controllers/posts_controller.rb b/app/controllers/posts_controller.rb index d8e7f03..4b39f11 100644 --- a/app/controllers/posts_controller.rb +++ b/app/controllers/posts_controller.rb @@ -46,6 +46,47 @@ class PostsController < ApplicationController @post.destroy! redirect_to posts_url, notice: "Post was successfully destroyed.", status: :see_other end + + def export + @posts = Post.order(published_at: :desc) + send_data @posts.to_json, filename: "posts_export.json", type: "application/json" + end + + def importer + end + + def import + if params[:file].present? + file = params[:file] + if file.content_type == "application/json" + begin + data = JSON.parse(file.read) + import_results = { success: 0, failed: 0, errors: [] } + + ActiveRecord::Base.transaction do + import_posts(data['posts'], import_results) if data['posts'] + import_bookmarks(data['bookmarks'], import_results) if data['bookmarks'] + end + + if import_results[:failed] > 0 + flash[:warning] = "Import partially succeeded. Successful: #{import_results[:success]}, Failed: #{import_results[:failed]}. Check the logs for detailed errors." + else + flash[:notice] = "Data imported successfully. Total items: #{import_results[:success]}" + end + rescue JSON::ParserError + flash[:alert] = "Invalid JSON file." + rescue => e + flash[:alert] = "Error importing data: #{e.message}" + logger.error "Import Error: #{e.message}\n#{e.backtrace.join("\n")}" + end + else + flash[:alert] = "Please upload a JSON file." + end + else + flash[:alert] = "Please select a file to import." + end + redirect_to posts_path + end private # Use callbacks to share common setup or constraints between actions. @@ -55,6 +96,70 @@ class PostsController < ApplicationController # Only allow a list of trusted parameters through. def post_params - params.require(:post).permit(:post_type, :title, :slug, :published_at, :excerpt, :tags, :content, :url) + params.require(:post).permit(:post_type, :title, :slug, :published_at, :excerpt, :tags, :content, :url, :file) + end + + def import_posts(posts_data, results) + return unless posts_data.is_a?(Array) + + posts_data.each do |post_data| + begin + post = Post.new( + post_type: 'dispatch', + title: post_data['title'], + slug: post_data['slug'], + published_at: post_data['date'], + content: post_data['content'], + tags: post_data['tags'] + ) + + if post.save + results[:success] += 1 + else + results[:failed] += 1 + results[:errors] << "Post '#{post_data['title']}': #{post.errors.full_messages.join(', ')}" + end + rescue => e + results[:failed] += 1 + results[:errors] << "Post '#{post_data['title']}': #{e.message}" + logger.error "Error importing post: #{post_data.inspect}\nError: #{e.message}\n#{e.backtrace.join("\n")}" + end + end + end + + def import_bookmarks(bookmarks_data, results) + return unless bookmarks_data.is_a?(Array) + + bookmarks_data.each do |bookmark_data| + begin + comment = bookmark_data['comment'] + title, content = if comment.include?('«') + comment.split('«', 2).map(&:strip) + else + [comment, nil] + end + + post = Post.new( + post_type: 'bookmark', + title: title, + published_at: bookmark_data['datetime'], + excerpt: title, + content: content, + tags: bookmark_data['starred'] == 1 ? 'starred' : '', + url: bookmark_data['url'] + ) + + if post.save + results[:success] += 1 + else + results[:failed] += 1 + results[:errors] << "Bookmark '#{bookmark_data['url']}': #{post.errors.full_messages.join(', ')}" + end + rescue => e + results[:failed] += 1 + results[:errors] << "Bookmark '#{bookmark_data['url']}': #{e.message}" + logger.error "Error importing bookmark: #{bookmark_data.inspect}\nError: #{e.message}\n#{e.backtrace.join("\n")}" + end + end end end diff --git a/app/models/concerns/url_title_fetchable.rb b/app/models/concerns/url_title_fetchable.rb new file mode 100644 index 0000000..efa6338 --- /dev/null +++ b/app/models/concerns/url_title_fetchable.rb @@ -0,0 +1,38 @@ +require 'open-uri' + +module UrlTitleFetchable + extend ActiveSupport::Concern + + def fetch_title_from_url(url) + options = { + 'User-Agent' => 'facebookexternalhit/1.0', + ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE, + read_timeout: 12 + } + + begin + doc = Nokogiri::HTML(URI.open(url, options)) + title = doc.at_css('title')&.text&.strip + clean_title(title) if title.present? + rescue StandardError => e + Rails.logger.error("Error fetching title for URL #{url}: #{e.message}") + nil + end + end + + private + + def clean_title(title) + # List of common separators + separators = %w[| - : • · — – →] + + # Create a regex pattern from the separators + separator_pattern = Regexp.union(separators) + + # Split the title at the first occurrence of any separator + cleaned_title = title.split(separator_pattern).first&.strip + + # Return the cleaned title if it's not empty, otherwise return the original title + cleaned_title.present? ? cleaned_title : title + end +end \ No newline at end of file diff --git a/app/models/post.rb b/app/models/post.rb index 4cc2ea7..64e613e 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -1,12 +1,15 @@ class Post < ApplicationRecord + include UrlTitleFetchable + validates :post_type, presence: true, inclusion: { in: %w[dispatch bookmark] } validates :title, presence: true - validates :slug, presence: true, uniqueness: true + validates :slug, presence: true, uniqueness: true, if: :dispatch? validates :published_at, presence: true, if: :dispatch? validates :content, presence: true, if: :dispatch? validates :url, presence: true, if: :bookmark? before_validation :set_slug, if: :new_record? + before_validation :set_title_from_url, if: -> { bookmark? && title.blank? } scope :dispatches, -> { where(post_type: 'dispatch') } scope :bookmarks, -> { where(post_type: 'bookmark') } @@ -59,4 +62,21 @@ class Post < ApplicationRecord def set_published_at self.published_at ||= Time.current end + + private + + def set_title_from_url + return unless bookmark? && url.present? && title.blank? + + Rails.logger.debug("Attempting to fetch title for URL: #{url}") + fetched_title = fetch_title_from_url(url) + + if fetched_title.present? + Rails.logger.debug("Successfully fetched title: #{fetched_title}") + self.title = fetched_title + else + Rails.logger.debug("Failed to fetch title, using default") + self.title = "Bookmark" + end + end end \ No newline at end of file diff --git a/app/views/posts/importer.html.erb b/app/views/posts/importer.html.erb new file mode 100644 index 0000000..3a91bc6 --- /dev/null +++ b/app/views/posts/importer.html.erb @@ -0,0 +1,26 @@ +
+

Data importer

+ <%= link_to "Back to posts", posts_path, class: "button" %> +
+
+
+ <%= image_tag "porter.svg", class: "porter" %> + + <%= form_tag import_path, multipart: true do %> +
+ <%= label_tag :file, "Select JSON file to import" %> + <%= file_field_tag :file, accept: 'application/json' %> +
+ <%= submit_tag "Import Data", class: "button" %> + <% end %> + +

What are we doing here?

+

“Give me your tired, your poor,
+ Your huddled masses yearning to breathe free,
+ The wretched refuse of your teeming shore.
+ Send these, the homeless, tempest-tost to me,
+ I lift my lamp beside the golden door!”

+ — Emma Lazarus + +
+
\ No newline at end of file diff --git a/app/views/posts/index.html.erb b/app/views/posts/index.html.erb index 748e7a6..70da4e4 100644 --- a/app/views/posts/index.html.erb +++ b/app/views/posts/index.html.erb @@ -2,6 +2,8 @@ <% content_for :title, "Posts" %>

Posts

<%= link_to "New post", new_post_path, class: "button" %> <%= link_to "Home", root_path, class: "button" %> + <%= link_to "Export Data", export_path, class: "button" %> + <%= link_to "Import Data", importer_path, class: "button" %>
diff --git a/app/views/posts/show.html.erb b/app/views/posts/show.html.erb index cc3e9f3..d016f9d 100644 --- a/app/views/posts/show.html.erb +++ b/app/views/posts/show.html.erb @@ -10,7 +10,7 @@ <%= render @post %>
- <%= link_to "Edit this post", edit_post_path(@post) %> + <%= link_to "Edit this post", edit_post_path(@post), class: "button" %> <%= button_to "Destroy this post", @post, method: :delete %>
diff --git a/app/views/pubview/index.html.erb b/app/views/pubview/index.html.erb index 0ed4eb0..f78ca14 100644 --- a/app/views/pubview/index.html.erb +++ b/app/views/pubview/index.html.erb @@ -1,8 +1,15 @@
+<% if notice or alert %> +
+

Notice:

+

<%= notice or alert %>

+
+<% end %> <%= link_to root_path do %> <%= image_tag "logo-192.png", class: "logo" %> <% end %> -

Arelpe

+

mind reader

+

Aidan’s anti-capitalist posting and sharing project

@@ -30,7 +37,7 @@ <% else %> <%= link_to item.title, item.url, target: "_blank" %> - ↗︎ + ↗︎ « <%= item.content %> added <%= item.created_at.strftime('%l:%M%P on %d/%m/%y') if item.created_at.present? %> diff --git a/app/views/pubview/post.html.erb b/app/views/pubview/post.html.erb index ad8cab4..d5d8cee 100644 --- a/app/views/pubview/post.html.erb +++ b/app/views/pubview/post.html.erb @@ -1,4 +1,7 @@
+ <%= link_to root_path do %> + <%= image_tag "logo-192.png", class: "logo" %> + <% end %>

<%= @post.title %>

<%= link_to "↼ Back to some other ideas...", root_path %>