小编Bre*_*uir的帖子

我疯了吗?(如何)我应该创建一个jQuery内容编辑器?

好的,所以我创建了一个主要针对小学的CMS.它在新西兰相当受欢迎,但我讨厌的一件事就是浏览器WYSIWYG编辑的质量很差.我一直在使用KTML(几年前由Adobe收购的InterAKT制造).在我看来,这个编辑器做了很多很棒的事情(图像编辑/管理,缩略图和非常好的内容编辑).不幸的是,时间已经有了这个产品的讨厌方式,新的浏览器开始破坏功能,并且通常会降低此工具的性能.基于已经废弃的产品,我的生计也是非常可怕的!

我一直在打猎,事实上我经常在周围寻找,看看WYSIWYG竞技场是否有任何变化.我见过的最让我兴奋的是WYSIHAT框架,但他们决定忽略一个非常相关的编辑范例,我将在下面概述.这是我提议的编辑器的想法,我不知道任何可以正确执行此操作的现有产品:

是的,所以传统的编辑模型让我们说CMS中的一个页面就是登录"后端"并点击页面上的编辑.然后,这将加载另一个屏幕,其中包含编辑器以及其他一些字段.更高级的CMS可能会有几个编辑框,用于页面的不同部分.无论如何,这种做事方式的一个大问题是用户正在编辑一个文档,而不是它将出现的最终上下文.最简单的说,这意味着页面模板.许多事情可能是错误的,例如,编辑区域的可能与实际模板区域的宽度不同.高度几乎总是固定的,因为现有的编辑器似乎总是使用IFRAMES来实现向后兼容.还有很多其他的牛肉,如果你在这个开发区,我相信你很清楚.

这是我的编辑乌托邦:

单击"编辑页面":显示实际页面(及其实际模板).页面的某些部分已通过类名标记为可编辑.你点击这些区域中的一个(在我的情况下,它刚刚在模板中间的大"身体"区)和编辑栏与您的所有标准控制屏(粗体,斜体的顶部落下,插入图像等...).从不使用iframe,而是依赖于在有问题的DIV上将contentEditable设置为true.Firefox 2和IE6可以消失,让我们继续前进.您可以编辑页面,确切地知道保存时的外观.因为加载了此模板的所有样式,所以您的标题看起来是正确的,所有内容都只是花花公子.这是一个如此激进的概念吗?为什么我们仍然满足于TinyMCE以及其他使用起来太尴尬的编辑器因为它听起来像一个脏话!?

让我们面对事实:

我是一个JavaScript新手.我曾经使用SitePoint的Javascript Anthology作为指南在这个区域玩过.这是一个非常酷的学习经历,但他们当然使用IFRAME让他们的生活更轻松.我尝试使用不同的路径,只使用contentEditable,甚至尝试回避本机内容编辑例程(execCommand),而是编写自己的.他们有点工作,但总有问题.

现在我们有了jQuery,还有一些库可以抽象IE缺乏Range支持.我想知道,我是疯了,还是尝试使用jQuery和相关插件围绕这个编辑范例构建编辑器以使工作更轻松实际上是一个好主意?

我的实际问题:

  • 你会从哪里开始的?
  • 您知道哪些插件最有帮助?
  • 是否值得,或者我是否应该加入一个已经存在的神奇项目?
  • 在这样的项目中,要克服的最大障碍是什么?
  • 我疯了吗?

我希望这个问题已经发布在正确的董事会上.我认为这是一个技术问题,因为我想知道需要注意的具体障碍和缺陷,以及技术上是否可行的当今技术.

期待听到人们的想法和意见.

UPDATE

我已经决定我会参与其中,并且当我有一些很酷的东西可以看时,它会启动一个github项目.从那里我会非常高兴为人们提供任何帮助.它当然是开源的:)

更新2

我已经完成了这个项目并概述了目标.如果您想加入项目组作为贡献者,请告诉我,但我会首先了解基础知识,以便开始使用.

这是链接:http://github.com/brendon/SpikeEdit

更新3

哇!我找到了这个项目.多么酷的主意!我正和他取得联系,看看他是否随处可见:

http://www.fluffy.co.uk/stediting

更新4

好的,我得到了相当远的距离.最大的问题(就像每个人都知道的那样)是如何在合理的事态中保持代码生成.WYSIHAT似乎已经接受了整个非IFRAME的事情,所以我不想看看它会走多远.他们采用的方法是在编辑周期结束时清理代码.我认为它应该在运行中清理,否则你可以编辑自己陷入泥潭(我已经完成了几次).当我有时间的时候,我会调查某种可以插入的均匀化引擎,使编辑过程在所有现代浏览器中尽可能地表现得相似.

jquery wysiwyg editor

32
推荐指数
3
解决办法
3946
查看次数

使GROUP_CONCAT查询更有效

我有以下查询.这个想法是,它让我知道什么groups,然后users,可以访问每个component_instance.我想知道是否有更好的方法来执行此操作,因为查询速度很慢,但每次处理此表时都有这些额外的列非常方便:

SELECT component_instances.*, 
GROUP_CONCAT(DISTINCT IF(permissions.view, groups.id, NULL)) AS view_group_ids,
GROUP_CONCAT(DISTINCT IF(permissions.edit, groups.id, NULL)) AS edit_group_ids,
GROUP_CONCAT(DISTINCT IF(permissions.view, users.id, NULL)) AS view_user_ids,
GROUP_CONCAT(DISTINCT IF(permissions.edit, users.id, NULL)) AS edit_user_ids
FROM `component_instances`
LEFT OUTER JOIN permissions ON permissions.component_instance_id = component_instances.id
LEFT OUTER JOIN groups ON groups.id = permissions.group_id
LEFT OUTER JOIN groups_users ON groups_users.group_id = groups.id
LEFT OUTER JOIN users ON users.id = groups_users.user_id
GROUP BY component_instances.id
ORDER BY (case when component_instances.ancestry is null then 0 else …
Run Code Online (Sandbox Code Playgroud)

mysql group-by ruby-on-rails group-concat

16
推荐指数
1
解决办法
1553
查看次数

在后台运行任务,CPU优先级较低

我的CMS中有一项功能,允许用户上传一个包含图像的zip文件,服务器将提取它们并将每个文件插入图像库.我注意到这会严重影响CPU并导致其他请求变慢.

我正在考虑使用delayed_job插件将每个图像添加委托给后台,但我也想让该进程具有较低的CPU优先级,这样它就不会让服务器陷入困境.

我对演习的延迟部分非常有信心,但节流部分是我被卡住的地方.是否有一种降低方法调用优先级的红宝石方法?

这是调整大小导致CPU咀嚼的图像.

任何想法欢迎:)

ruby-on-rails cpu-usage delayed-job

10
推荐指数
1
解决办法
2944
查看次数

保持模型记录和相关目录同步(与测试)

在我的应用程序中,我在创建主题记录时创建了一个目录.这是为了存储与主题相关的文件资产.我一直在努力避免如何使目录的存在与记录的生命周期保持同步.这是我目前的看法:

after_create :create_theme_directory
after_rollback :destroy_theme_directory, :on => :create, :if => :id

def directory
    Rails.configuration.uploads_root.join('themes', id.to_s)
end

private

def create_theme_directory
    FileUtils.mkdir_p directory
end

def destroy_theme_directory
    FileUtils.remove_dir directory, :force => true
end
Run Code Online (Sandbox Code Playgroud)

它运行良好,但Rspec在测试后回滚主题记录时似乎没有触发删除目录.

这种事情有最好的做法吗?我们的想法是永远不要留下没有相关记录的迷路目录.

filesystems activerecord rspec ruby-on-rails ruby-on-rails-3.2

9
推荐指数
1
解决办法
330
查看次数

Ruby on Rails 3.2 Mailer,本地化邮件主题字段

我目前正在编写RoR 3.2中的邮件程序,它会发送应根据用户语言进行本地化的邮件.我设法渲染了正确的本地化视图,但是我在某些需要更改区域设置的字段(如主题)方面遇到了一些困难.我已经阅读了一些反对在发送电子邮件之前更改语言环境的帖子.用户有许多不同的语言,这意味着每次向用户发送电子邮件时都要更改我的语言环境.

我知道可以更改区域设置,发送电子邮件,更改区域设置.这不像铁路的方式.这样做有正确的方法吗?

这是一个片段:

class AuthMailer < ActionMailer::Base
  add_template_helper(ApplicationHelper)
  default :from => PREDEF_MAIL_ADDRESSES::System[:general]

  [...]

  def invite(address, token, locale)
    @token = token
    @locale = locale
    @url = url_for(:controller => "signup_requests", :action => "new", :token => token.key, :locale => locale)

    mail(:subject => "Invitation", :to => address) do |format|
      format.html { render ("invite."+locale) }
      format.text { render ("invite."+locale) }
    end
  end

  [...]
end
Run Code Online (Sandbox Code Playgroud)

我的看法

auth_mailer
  invite.en.html.erb
  invite.en.text.erb
  invite.it.html.erb
  invite.it.text.erb
  ...
Run Code Online (Sandbox Code Playgroud)

简而言之,在这种情况下,我想使用@locale本地化:subject,但不是通过运行:I18n.locale = locale

actionmailer ruby-on-rails-3

7
推荐指数
2
解决办法
6530
查看次数

Cycle2制作图片链接

嗨我刚刚从Keyframes换成了Cycle2(http://jquery.malsup.com/cycle2/)作为幻灯片放映图片的一种方式,我交换到了cycle2,因为我相信这可以让我制作图片链接,我只需要一个图像链接不是全部,所以当幻灯片显示到幻灯片时链接处于活动状态,

 <img src="/images/promo1.jpg">
 <img src="/images/promo2.jpg">
 <img src="/images/promo3.jpg">
 <img src="/images/promo4.jpg">
Run Code Online (Sandbox Code Playgroud)

这很好的幻灯片完美,很快我尝试

<a href="http://www.google.co.uk">
 <img src="images/promo2.jpg"></a>
Run Code Online (Sandbox Code Playgroud)

在其中一张图片上,它会将其从幻灯片中删除,并将其作为自己的图像显示在下方.

任何帮助赞赏

谢谢

javascript jquery animation cycle

6
推荐指数
1
解决办法
6515
查看次数

HTML + CSS 无限滚动背景:在 Safari 上重复闪烁

我正在创建一个带有一堆滚动层(前景、中景、背景等)的场景,但令人讨厌的是,当动画重新启动时,我在 Safari (14.0.3) 上出现闪烁。这不会发生在 Chrome 或 Firefox 上。

我在这里创建了一个最小的可重现示例:

https://brendon.github.io/safari_flicker/index.html

这是代码:

.animation {
  position: relative;
  height: 395px;
  background-image: linear-gradient(#1b9dd9, #00b6ed 44%, #ffe56c 75%);
}

.animation .scrollingAnimation {
  position: absolute;
  overflow: hidden;
  height: 100%;
  width: 100%;
}

.animation .scrollingAnimation:before {
  content: "";
  position: absolute;
  height: 100%;
  width: 200%;
}

.animation .foreground:before {
  /* Dimensions: */
  /* width: 1696px; */
  /* height: 74px; */
  min-width: 6784px;
  background-image: url("https://brendon.github.io/safari_flicker/foreground.png");
  background-position: left bottom -11px;
  background-repeat: repeat-x;
  background-size: auto 74px;
  transform: translateX(-1696px);
  animation: foreground 10s …
Run Code Online (Sandbox Code Playgroud)

html css safari

6
推荐指数
1
解决办法
176
查看次数

为什么集合= has_many上的对象:通过删除关联时连接模型上的触发器回调?

Rails 4文档说明了关于has_many :through关系的连接模型上的销毁回调:

collection=objects通过适当删除和添加对象来替换集合内容.如果:through选项为true,则会触发连接模型中的回调,但销毁回调除外,因为删除是直接的.

值得庆幸的是,它至少有记载,但我想知道为什么到底是这样的?希望有一个技术原因,否则它只是疯了!

在我的情况下,我has_and_belongs_to_many在连接表模型上有一个关系到另一个模型.删除第一个连接表上的关联记录时,永远不会删除该第二个连接表上的记录.我使用了这种感觉很难的东西,我必须在:through关系的每一方面重复自己:

has_many :schools_templates, dependent: :destroy
has_many :templates, through: :schools_templates, before_remove: :remove_groups_school_templates

private

def remove_groups_school_templates(template)
  schools_templates.where(template: template).first.groups.clear
end
Run Code Online (Sandbox Code Playgroud)

对两个外键之间的连接表记录进行"确保"唯一性验证,这就是我可以调用first回调的原因.

activerecord ruby-on-rails callback has-many-through ruby-on-rails-4

5
推荐指数
1
解决办法
212
查看次数

在rails ActiveRecord中进行类比转换自定义列?

假设我们这样做:

default_scope :select => '*, 1+1 AS woah'
Run Code Online (Sandbox Code Playgroud)

在模型中,我们可以访问woah作为模型上的方法,但它是一个字符串.我们如何对它进行类型转换以使其成为整数?

在我的实际示例中,我实际上是从连接表中选择一个id,但它被键入为字符串.我需要它是一个ruby整数.

activerecord types ruby-on-rails

3
推荐指数
1
解决办法
1497
查看次数