diff --git a/app/models/site/build_stats.rb b/app/models/site/build_stats.rb
index 6eebcc84..071b1eab 100644
--- a/app/models/site/build_stats.rb
+++ b/app/models/site/build_stats.rb
@@ -40,6 +40,72 @@ class Site
def not_published_yet?
build_stats.jekyll.where(status: true).count.zero?
end
+
+ # Cambios posibles luego de la última publicación exitosa:
+ #
+ # * Artículos modificados
+ # * Configuración modificada
+ # * Métodos de publicación añadidos
+ #
+ # @return [Boolean]
+ def awaiting_publication?
+ waiting? && (post_pending? || deploy_pending? || configuration_pending?)
+ end
+
+ # Se modificaron artículos después de publicar el sitio por última
+ # vez
+ #
+ # @return [Boolean]
+ def post_pending?
+ last_indexed_post_time > last_publication_time
+ end
+
+ # Se modificó el sitio después de publicarlo por última vez
+ #
+ # @return [Boolean]
+ def deploy_pending?
+ last_deploy_time > last_publication_time
+ end
+
+ # Se modificó la configuración del sitio
+ #
+ # @return [Boolean]
+ def configuration_pending?
+ last_configuration_time > last_publication_time
+ end
+
+ private
+
+ # Encuentra la fecha del último artículo modificado. Si no hay
+ # ninguno, devuelve la fecha de modificación del sitio.
+ #
+ # @return [Time]
+ def last_indexed_post_time
+ indexed_posts.order(updated_at: :desc).select(:updated_at).first&.updated_at || updated_at
+ end
+
+ # Encuentra la fecha de última modificación de los métodos de
+ # publicación.
+ #
+ # @return [Time]
+ def last_deploy_time
+ deploys.order(created_at: :desc).select(:created_at).first&.created_at || updated_at
+ end
+
+ # Encuentra la fecha de última publicación exitosa, si no hay
+ # ninguno, devuelve la fecha de modificación del sitio.
+ #
+ # @return [Time]
+ def last_publication_time
+ build_stats.jekyll.where(status: true).order(created_at: :desc).select(:created_at).first&.created_at || updated_at
+ end
+
+ # Fecha de última modificación de la configuración
+ #
+ # @return [Time]
+ def last_configuration_time
+ File.mtime(config.path)
+ end
end
end
end
diff --git a/app/views/posts/index.haml b/app/views/posts/index.haml
index 7f9658af..3f3ec6a8 100644
--- a/app/views/posts/index.haml
+++ b/app/views/posts/index.haml
@@ -2,8 +2,7 @@
%aside.menu.col-md-3
= render 'sites/header', site: @site
- - cache_if @usuarie, [@site, I18n.locale] do
- = render 'sites/status', site: @site
+ = render 'sites/status', site: @site
= render 'sites/build', site: @site, class: 'btn-block'
diff --git a/app/views/sites/_status.haml b/app/views/sites/_status.haml
index 4cf480df..6a610e73 100644
--- a/app/views/sites/_status.haml
+++ b/app/views/sites/_status.haml
@@ -1,7 +1,9 @@
- link = nil
- if site.not_published_yet?
- message = t('.not_published_yet')
-- if site.building?
+- elsif site.awaiting_publication?
+ - message = t('.awaiting_publication')
+- elsif site.building?
- if site.average_publication_time_calculable?
- average_building_time = site.average_publication_time
- elsif !site.similar_sites?
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 27c52f48..8329419b 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -367,6 +367,7 @@ en:
building: "Your site is building, refresh this page in ."
not_published_yet: "Your site is being published for the first time, please wait up to 1 minute..."
available: "Your site is available! Click here to find all the different ways to visit it."
+ awaiting_publication: "There are unpublished changes. Click the button below and wait a moment to find them on your site."
index:
title: 'My Sites'
pull: 'Upgrade'
diff --git a/config/locales/es.yml b/config/locales/es.yml
index e3339156..c415d2e0 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -372,6 +372,7 @@ es:
building: "Tu sitio se está publicando, recargá esta página en ."
not_published_yet: "Tu sitio se está publicando por primera vez, por favor espera hasta un minuto..."
available: "¡Tu sitio está disponible! Cliqueá aquí para encontrar todas las formas en que podés visitarlo."
+ awaiting_publication: "Hay cambios sin publicar, cliqueá el botón debajo y espera un momento para encontrarlos en tu sitio."
index:
title: 'Mis sitios'
pull: 'Actualizar'