Here is a sample Rails helper that can be used to place Clippy on a page:
# Generates clippy embed code with the given options. From the options one of
# <tt>:text</tt>, <tt>:id</tt>, or <tt>:call</tt> has to be provided.
#
# === Supported options
# [:text]
# Text to be copied to the clipboard.
# [:id]
# Id of a DOM element from which the text should be taken. If it is a form
# element the <tt>value</tt> attribute, otherwise the <tt>innerHTML</tt>
# attribute will be used.
# [:call]
# A name of a javascript function to be called for the text.
# [:copied]
# Label text to show next to the icon after a successful copy action.
# [:copyto]
# Label text to show next to the icon before it is clicked.
# [:callBack]
# A name of a javascript function to be called after a successful copy
# action. The function will be called with one argument which is the value
# of the <tt>text</tt>, <tt>id</tt>, or <tt>call</tt> parameter, whichever
# was used.
def clippy(options={})
options = options.symbolize_keys
if options[:text].nil? and options[:id].nil? and options[:call].nil?
raise(ArgumentError, "at least :text, :id, or :call has to be provided")
end
bg_color = options.delete(:bg_color)
query_string = options.to_query
html = <<-EOF
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="110"
height="14"
id="clippy-#{rand().object_id}" >
<param name="movie" value="/flash/clippy.swf" />
<param name="allowScriptAccess" value="always" />
<param name="quality" value="high" />
<param name="scale" value="noscale" />
<param NAME="FlashVars" value="#{query_string}">
<param name="bgcolor" value="#{bg_color}">
<embed src="/flash/clippy.swf"
width="110"
height="14"
name="clippy"
quality="high"
allowScriptAccess="always"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer"
FlashVars="#{query_string}"
bgcolor="#{bg_color}"
/>
</object>
EOF
end
If you want to use Clippy unmodified, just copy build/clippy.swf
to your
public
directory or wherever your static assets can be found.
In order to compile Clippy from source, you need to install the following:
The haXe code is in clippy.hx
, the button images are in assets
, and the
compiler config is in compile.hxml
. Make sure you look at all of these to
see where and what you'll need to modify. To compile everything into a final
SWF, run the following from Clippy's root directory:
swfmill simple library.xml library.swf && haxe compile.hxml
If that is successful, copy build/clippy.swf
to your
public
directory or wherever your static assets can be found.
If you'd like to hack on Clippy, start by forking my repo on GitHub:
http://github.com/mojombo/clippy
The best way to get your changes merged back into core is as follows:
- Clone down your fork
- Create a topic branch to contain your change
- Hack away
- If you are adding new functionality, document it in README.md
- If necessary, rebase your commits into logical chunks, without errors
- Push the branch up to GitHub
- Send me (mojombo) a pull request for your branch
MIT License (see LICENSE file)