├── .github └── workflows │ ├── rubocop.yml │ └── spec.yml ├── .gitignore ├── .irbrc ├── .rspec ├── .rubocop.yml ├── .rubocop_todo.yml ├── .ruby-version ├── CREDITS.md ├── Dockerfile ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Procfile ├── README.md ├── Rakefile ├── app ├── assets │ ├── config │ │ └── manifest.js │ ├── images │ │ ├── .keep │ │ ├── avatars │ │ │ ├── chisel.svg │ │ │ ├── chisel_original.png │ │ │ ├── chisel_thumb.png │ │ │ ├── drill.svg │ │ │ ├── drill_original.png │ │ │ ├── drill_thumb.png │ │ │ ├── hammer.svg │ │ │ ├── hammer_original.png │ │ │ ├── hammer_thumb.png │ │ │ ├── hand-file.svg │ │ │ ├── hand-file_original.png │ │ │ ├── hand-file_thumb.png │ │ │ ├── hand-plane.svg │ │ │ ├── hand-plane_original.png │ │ │ ├── hand-plane_thumb.png │ │ │ ├── pliers.svg │ │ │ ├── pliers_original.png │ │ │ ├── pliers_thumb.png │ │ │ ├── ruler.svg │ │ │ ├── ruler_original.png │ │ │ ├── ruler_thumb.png │ │ │ ├── saw.svg │ │ │ ├── saw_original.png │ │ │ ├── saw_thumb.png │ │ │ ├── screwdriver.svg │ │ │ ├── screwdriver_original.png │ │ │ ├── screwdriver_thumb.png │ │ │ ├── wrench.svg │ │ │ ├── wrench_original.png │ │ │ └── wrench_thumb.png │ │ ├── favicon.gif │ │ ├── hackweek-cameleon.svg │ │ ├── hackweek-label-small.png │ │ ├── hackweek-label-square.png │ │ ├── hackweek-label.png │ │ ├── hackweek-logo-dark.icon.png │ │ ├── hackweek-logo-dark.png │ │ ├── hackweek-logo-light.png │ │ ├── hackweek_monsterhacks.png │ │ ├── monsterhacks_monsters_only.png │ │ ├── suse-logo-black.png │ │ ├── suse-logo-color.png │ │ ├── suse-logo-sketch.png │ │ ├── suse-logo-white.png │ │ ├── suse_logo_w-tag_black.png │ │ └── suse_mark_reverse.png │ ├── javascripts │ │ ├── application.js │ │ ├── channels │ │ │ └── .keep │ │ ├── holder.js │ │ ├── jquery.table-filter.js │ │ └── zoomed.application.js │ ├── stylesheets │ │ ├── application.css │ │ ├── comments.scss │ │ ├── hackweek.scss │ │ ├── strap-on.scss │ │ ├── syntax.scss.erb │ │ └── webfonts.scss │ └── videos │ │ ├── Hackweek_Welcome_by_Ralf.mp4 │ │ └── Hackweek_Welcome_by_Ralf.webm ├── controllers │ ├── about_controller.rb │ ├── announcements_controller.rb │ ├── application_controller.rb │ ├── comments_controller.rb │ ├── concerns │ │ └── .keep │ ├── episodes_controller.rb │ ├── faqs_controller.rb │ ├── keywords_controller.rb │ ├── markdown_controller.rb │ ├── notifications_controller.rb │ ├── projects │ │ └── project_follows_controller.rb │ ├── projects_controller.rb │ ├── search_controller.rb │ ├── updates_controller.rb │ └── users_controller.rb ├── helpers │ ├── application_helper.rb │ └── markdown_helper.rb ├── indices │ ├── project_index.rb │ └── user_index.rb ├── jobs │ └── application_job.rb ├── models │ ├── ability.rb │ ├── announcement.rb │ ├── application_record.rb │ ├── comment.rb │ ├── enrollment.rb │ ├── episode.rb │ ├── faq.rb │ ├── keyword.rb │ ├── like.rb │ ├── membership.rb │ ├── notification.rb │ ├── project.rb │ ├── project_follow.rb │ ├── role.rb │ ├── update.rb │ └── user.rb └── views │ ├── about │ ├── index.html.haml │ └── show.html.haml │ ├── announcements │ ├── _announcement.html.haml │ ├── _announcement_toggle.js.erb │ ├── _file_buttons.html.haml │ ├── _form.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ ├── new.html.haml │ └── show.html.haml │ ├── comments │ ├── _comment.html.haml │ ├── _form.html.haml │ ├── _help.html.haml │ └── index.html.haml │ ├── devise │ └── ichain_sessions │ │ ├── new.html.haml │ │ ├── new.js.erb │ │ ├── new_test.html.haml │ │ └── new_test.js.erb │ ├── episodes │ ├── _file_buttons.html.haml │ ├── _form.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ ├── new.html.haml │ └── show.html.haml │ ├── faqs │ ├── _form.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ └── new.html.haml │ ├── kaminari │ ├── _first_page.html.haml │ ├── _gap.html.haml │ ├── _last_page.html.haml │ ├── _next_page.html.haml │ ├── _page.html.haml │ ├── _paginator.html.haml │ └── _prev_page.html.haml │ ├── keywords │ ├── _new.html.haml │ ├── _show.html.haml │ ├── edit.html.haml │ └── index.html.haml │ ├── layouts │ ├── _admin_menu.html.haml │ ├── _alert.html.haml │ ├── _footer.html.haml │ ├── _header.html.haml │ ├── _news.html.haml │ ├── _notification_tab.html.haml │ ├── _scripts.html.haml │ └── application.html.haml │ ├── markdown │ ├── _preview.html.haml │ └── preview.js.erb │ ├── notifications │ ├── index.html.haml │ └── mark_as_read.js.erb │ ├── projects │ ├── _episode_buttons.html.haml │ ├── _episode_list.html.haml │ ├── _file_buttons.html.haml │ ├── _form.html.haml │ ├── _hackers.html.haml │ ├── _index.html.haml │ ├── _info.html.haml │ ├── _like_button.html.haml │ ├── _like_toggle.js.erb │ ├── _list.html.haml │ ├── _list_item.html.haml │ ├── _membership_buttons.html.haml │ ├── _similar_projects.html.haml │ ├── _state_name.html.haml │ ├── _tabs.html.haml │ ├── _tile.html.haml │ ├── edit.html.haml │ ├── episode_list.js.erb │ ├── index.html.haml │ ├── index.js.erb │ ├── index.rss.haml │ ├── membership_list.js.erb │ ├── new.html.haml │ ├── project_follows │ │ ├── follow_toggle.js.erb │ │ └── index.html.haml │ └── show.html.haml │ ├── search │ └── result.html.haml │ ├── shared │ └── _editor_buttons.html.haml │ ├── updates │ ├── _activity.html.haml │ ├── _more.html.haml │ ├── _show.html.haml │ ├── _show_all_modal.html.haml │ └── index.js.erb │ └── users │ ├── _buttons.html.haml │ ├── _empty_projects.html.haml │ ├── _list.html.haml │ ├── _tabs.html.haml │ ├── edit.html.haml │ ├── index.html.haml │ ├── index.js.erb │ └── show.html.haml ├── bin ├── bundle ├── mina ├── rails ├── rake └── rspec ├── config.ru ├── config ├── application.rb ├── application.yml.example ├── boot.rb ├── database.yml.example ├── deploy.rb ├── environment.rb ├── environments │ ├── development.rb │ ├── production.rb │ └── test.rb ├── initializers │ ├── assets.rb │ ├── content_security_policy.rb │ ├── custom_failure.rb │ ├── devise.rb │ ├── filter_parameter_logging.rb │ ├── inflections.rb │ ├── markdown.rb │ └── sentry.rb ├── locales │ └── en.yml ├── new_project_template.md ├── puma.rb ├── routes.rb ├── secrets.yml.example ├── storage.yml.example └── thinking_sphinx.yml.example ├── db ├── migrate │ ├── 20130408082936_create_projects.rb │ ├── 20130408132732_create_users.rb │ ├── 20130408142933_relate_project_to_user.rb │ ├── 20130409093521_create_updates.rb │ ├── 20130409110644_create_memberships.rb │ ├── 20130410175713_create_comments.rb │ ├── 20130411152323_create_likes.rb │ ├── 20130412090255_create_keywords.rb │ ├── 20130412090618_create_project_interests.rb │ ├── 20130412091534_create_user_interests.rb │ ├── 20130906125641_add_project_counter_cache.rb │ ├── 20130912160959_add_devise_to_users.rb │ ├── 20130919165239_add_aasm_state.rb │ ├── 20131010095502_create_announcements.rb │ ├── 20131010100037_create_enrollments.rb │ ├── 20131011111909_create_roles.rb │ ├── 20131011112148_user_belong_to_roles.rb │ ├── 20131011123003_create_events.rb │ ├── 20131011123206_project_belong_to_events.rb │ ├── 20140829132526_add_active_to_events.rb │ ├── 20140829151952_rename_events_to_episode.rb │ ├── 20140903092848_rename_episode_start_end.rb │ ├── 20140910105916_add_avatar_columns_to_projects.rb │ ├── 20150319172246_model_for_episodes_projects_association.rb │ ├── 20170221144704_add_url_to_projects.rb │ ├── 20180305183055_add_location_to_user.rb │ ├── 20180619192048_create_project_follows.rb │ ├── 20180702104632_create_notifications.rb │ ├── 20180712105306_add_description_to_episodes.rb │ ├── 20180730125036_create_impressions_table.rb │ ├── 20180730151836_add_projecthits_to_projects.rb │ ├── 20180820211721_create_faqs.rb │ ├── 20210303201638_add_hide_email_to_user.rb │ ├── 20210312230516_rename_project_interest.rb │ ├── 20210312232604_rename_user_interest.rb │ ├── 20210312233011_rename_memberships.rb │ ├── 20210314175543_rename_memberships_back.rb │ ├── 20210315195708_add_avatar_to_keywords.rb │ ├── 20210315195817_add_description_to_keywords.rb │ ├── 20220113162506_create_active_storage_tables.active_storage.rb │ └── 20220201134703_convert_to_active_storage.rb ├── schema.rb └── seeds.rb ├── docker-compose.override.yml.example ├── docker-compose.yml ├── lib └── tasks │ ├── .keep │ └── dev.rake ├── public ├── 404.html ├── 422.html ├── 500.html ├── favicon.ico ├── hackweek21poster.jpg └── robots.txt ├── spec ├── controllers │ ├── episodes_controller_spec.rb │ ├── markdown_controller_spec.rb │ ├── notifications_controller_spec.rb │ ├── projects │ │ └── project_follows_controller_spec.rb │ ├── projects_controller_spec.rb │ └── users_controller_spec.rb ├── factories │ ├── comments.rb │ ├── episodes.rb │ ├── notifications.rb │ ├── projects.rb │ ├── roles.rb │ └── users.rb ├── features │ ├── collaboration_spec.rb │ ├── comment_spec.rb │ ├── project_management_spec.rb │ └── search_spec.rb ├── helpers │ └── markdown_helper_spec.rb ├── models │ ├── ability_spec.rb │ ├── comment_spec.rb │ ├── episode_spec.rb │ └── project_spec.rb ├── rails_helper.rb ├── spec_helper.rb └── support │ ├── login_macros.rb │ └── sphinx_helpers.rb ├── storage └── .keep └── vendor └── .keep /.github/workflows/rubocop.yml: -------------------------------------------------------------------------------- 1 | name: Rubocop 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | rubocop: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: ruby/setup-ruby@v1 15 | with: 16 | bundler-cache: true 17 | - run: bundle exec rubocop 18 | -------------------------------------------------------------------------------- /.github/workflows/spec.yml: -------------------------------------------------------------------------------- 1 | name: Specs 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | workflow_dispatch: 9 | 10 | jobs: 11 | spec: 12 | runs-on: ubuntu-latest 13 | name: spec 14 | env: 15 | RAILS_ENV: test 16 | steps: 17 | - uses: actions/checkout@v2 18 | - uses: ruby/setup-ruby@v1 19 | with: 20 | bundler-cache: true 21 | - name: Prepare spec 22 | run: | 23 | sudo systemctl start mysql.service 24 | wget -nv http://sphinxsearch.com/files/dicts/en.pak 25 | bundle exec rake dev:bootstrap --trace 26 | bundle exec bin/rake webdrivers:chromedriver:update 27 | - name: Run tests 28 | run: bundle exec rspec --color --format documentation 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile ~/.gitignore_global 6 | 7 | # Ignore bundler config 8 | /.bundle 9 | /vendor/bundle 10 | 11 | # Ignore the default SQLite database. 12 | /db/*.sqlite3 13 | 14 | # Ignore all logfiles and tempfiles. 15 | /log/* 16 | /tmp 17 | 18 | # Ignore the configuration files 19 | /config/application.yml 20 | /config/secrets.yml 21 | /config/master.key 22 | /config/*.enc 23 | /config/database.yml 24 | /config/storage.yml 25 | /config/thinking_sphinx.yml 26 | docker-compose.override.yml 27 | 28 | # Ignore sphinx search db 29 | /db/sphinx/ 30 | /sphinx/db 31 | /sphinx/binlog 32 | /sphinx/pids/*.pid 33 | 34 | # Ignore sphinx dictionary 35 | en.pak 36 | 37 | # Ignore sphinx autogenerated configs 38 | /config/*.sphinx.conf 39 | 40 | /public/system/* 41 | /storage/* 42 | 43 | # Ignore the coverage files 44 | /coverage 45 | 46 | # All the other crap that fits nowhere specifically 47 | *~ 48 | *.bak 49 | *.tmp 50 | .*.sw* 51 | .directory 52 | .o 53 | .project 54 | .so 55 | nbproject 56 | *.vim 57 | *.pid 58 | *.iml 59 | *.ipr 60 | *.iws 61 | .idea/ 62 | .vagrant/ 63 | -------------------------------------------------------------------------------- /.irbrc: -------------------------------------------------------------------------------- 1 | require 'irb/completion' 2 | require 'irb/ext/save-history' 3 | 4 | ARGV.concat ['--readline', '--prompt-mode', 'simple'] 5 | 6 | # 500 entries in the list 7 | IRB.conf[:SAVE_HISTORY] = 500 8 | 9 | # Store results in home directory with specified file name 10 | IRB.conf[:HISTORY_FILE] = "#{Dir.home}/.irb_history" 11 | -------------------------------------------------------------------------------- /.rspec: -------------------------------------------------------------------------------- 1 | --color 2 | --require spec_helper 3 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | inherit_from: .rubocop_todo.yml 2 | require: 3 | - rubocop-rails 4 | - rubocop-rspec 5 | - rubocop-capybara 6 | - rubocop-factory_bot 7 | 8 | AllCops: 9 | NewCops: enable 10 | Exclude: 11 | - 'archive/**/*' 12 | - 'vendor/**/*' 13 | - 'design/**/*' 14 | - 'tools/**/*' 15 | - 'db/schema.rb' 16 | 17 | Style/PercentLiteralDelimiters: 18 | Exclude: 19 | - 'config/deploy.rb' 20 | 21 | Style/HashSyntax: 22 | EnforcedShorthandSyntax: either 23 | 24 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | 3.3.8 2 | -------------------------------------------------------------------------------- /CREDITS.md: -------------------------------------------------------------------------------- 1 | ### Icons 2 | * Hammer icon used is by Christopher T. Howlett from the [Noun Project](http://thenounproject.com/). 3 | * Hand-Plane, Chisel and Saw icons used are by Guvnor Co from the [Noun Project](http://thenounproject.com/). 4 | * Screwdriver icon used is by Tony Gines from the [Noun Project](http://thenounproject.com/). 5 | * Drill icon used is by James Keuning from the [Noun Project](http://thenounproject.com/). 6 | * Ruler icon used is by Chris Kerr from the [Noun Project](http://thenounproject.com/). 7 | * Wrench icon used is by John Caserta from the [Noun Project](http://thenounproject.com/). 8 | * Pliers icon used is by Andres Arenas from the [Noun Project](http://thenounproject.com/). 9 | * Hand-File icon used is by Luke Anthony Firth from the [Noun Project](http://thenounproject.com/). 10 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.opensuse.org/opensuse/infrastructure/dale/containers/hackweek/base:latest 2 | ARG CONTAINER_USERID=1000 3 | 4 | # Configure our user 5 | RUN usermod -u $CONTAINER_USERID hackweek 6 | 7 | # We copy the Gemfiles into this intermediate build stage so it's checksum 8 | # changes and all the subsequent stages (a.k.a. the bundle install call below) 9 | # have to be rebuild. Otherwise, after the first build of this image, 10 | # docker would use it's cache for this and the following stages. 11 | ADD Gemfile /hackweek/Gemfile 12 | ADD Gemfile.lock /hackweek/Gemfile.lock 13 | RUN chown -R hackweek /hackweek 14 | 15 | WORKDIR /hackweek 16 | USER hackweek 17 | 18 | # Install our bundle & process manager 19 | RUN bundle install --jobs=3 --retry=3; \ 20 | gem install foreman 21 | 22 | # Run our command 23 | CMD ["foreman", "start", "-f", "Procfile"] 24 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source 'https://rubygems.org' 2 | git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 | 4 | # as framework 5 | gem 'rails', '~> 7.0.1' 6 | # as asset pipeline 7 | gem 'sprockets-rails' 8 | # as the app server 9 | gem 'puma' 10 | 11 | group :development, :test do 12 | # as our rails console 13 | gem 'pry-byebug' 14 | gem 'pry-rails' 15 | # to improve inspect output 16 | gem 'hirb' 17 | end 18 | 19 | group :test do 20 | # for cleaning the test DB 21 | gem 'database_cleaner' 22 | # for measuring test coverage 23 | gem 'coveralls', require: false 24 | # as style hound 25 | gem 'rubocop' 26 | gem 'rubocop-capybara' 27 | gem 'rubocop-factory_bot' 28 | gem 'rubocop-rails' 29 | gem 'rubocop-rspec' 30 | # for time travel in tests 31 | gem 'timecop' 32 | # for feature tests 33 | gem 'webdrivers' 34 | end 35 | 36 | # as databases 37 | gem 'mysql2' 38 | # for stylesheets 39 | gem 'sass-rails' 40 | # as the front-end framework 41 | gem 'bootstrap-sass' 42 | # as vector icons 43 | gem 'font-awesome-sass' 44 | # as compressor for JavaScript assets 45 | gem 'uglifier', '>= 1.3.0' 46 | # as JavaScript library 47 | gem 'jquery-atwho-rails' 48 | gem 'jquery-hotkeys-rails' 49 | gem 'jquery-rails' 50 | gem 'js_cookie_rails' 51 | # as templating language 52 | gem 'haml-rails' 53 | # as authentification framework 54 | gem 'devise' 55 | gem 'devise_ichain_authenticatable' 56 | # as authorization framework 57 | gem 'cancancan' 58 | # for user avatars 59 | gem 'gravtastic' 60 | # for markdown rendering 61 | gem 'redcarpet' 62 | # for code block syntax highlighting 63 | gem 'rouge' 64 | # for token input 65 | gem 'selectize-rails' 66 | # as state machine 67 | gem 'aasm' 68 | # as exception notifier 69 | gem 'sentry-rails' 70 | gem 'sentry-ruby' 71 | # to set env variables 72 | gem 'figaro' 73 | # for keyboard shortcuts 74 | gem 'mousetrap-rails' 75 | # as search engine 76 | gem 'thinking-sphinx' 77 | # for pagination 78 | gem 'kaminari' 79 | # for slugs 80 | gem 'stringex' 81 | # for seeds 82 | gem 'factory_bot_rails', group: %i[development test] 83 | gem 'faker', group: %i[development test] 84 | # as test framework 85 | gem 'capybara', group: %i[development test] 86 | gem 'rails-controller-testing', group: %i[development test] 87 | gem 'rspec-rails', group: %i[development test] 88 | # as deployer 89 | gem 'mina' 90 | # as the log formater 91 | gem 'lograge' 92 | # for listening to file modifications 93 | gem 'listen' 94 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2013 SUSE 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: bundle exec bin/rails server -b 0.0.0.0 2 | search: bundle exec bin/rake ts:rebuild NODETACH=true 3 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require_relative 'config/application' 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /app/assets/config/manifest.js: -------------------------------------------------------------------------------- 1 | //= link_tree ../images 2 | //= link_directory ../javascripts .js 3 | //= link_directory ../stylesheets .css 4 | -------------------------------------------------------------------------------- /app/assets/images/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/.keep -------------------------------------------------------------------------------- /app/assets/images/avatars/chisel_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/chisel_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/chisel_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/chisel_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/drill_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/drill_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/drill_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/drill_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hammer.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /app/assets/images/avatars/hammer_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hammer_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hammer_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hammer_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hand-file.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /app/assets/images/avatars/hand-file_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hand-file_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hand-file_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hand-file_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hand-plane_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hand-plane_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/hand-plane_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/hand-plane_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/pliers_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/pliers_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/pliers_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/pliers_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/ruler.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /app/assets/images/avatars/ruler_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/ruler_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/ruler_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/ruler_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/saw_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/saw_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/saw_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/saw_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/screwdriver.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /app/assets/images/avatars/screwdriver_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/screwdriver_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/screwdriver_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/screwdriver_thumb.png -------------------------------------------------------------------------------- /app/assets/images/avatars/wrench.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml -------------------------------------------------------------------------------- /app/assets/images/avatars/wrench_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/wrench_original.png -------------------------------------------------------------------------------- /app/assets/images/avatars/wrench_thumb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/avatars/wrench_thumb.png -------------------------------------------------------------------------------- /app/assets/images/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/favicon.gif -------------------------------------------------------------------------------- /app/assets/images/hackweek-label-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-label-small.png -------------------------------------------------------------------------------- /app/assets/images/hackweek-label-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-label-square.png -------------------------------------------------------------------------------- /app/assets/images/hackweek-label.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-label.png -------------------------------------------------------------------------------- /app/assets/images/hackweek-logo-dark.icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-logo-dark.icon.png -------------------------------------------------------------------------------- /app/assets/images/hackweek-logo-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-logo-dark.png -------------------------------------------------------------------------------- /app/assets/images/hackweek-logo-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek-logo-light.png -------------------------------------------------------------------------------- /app/assets/images/hackweek_monsterhacks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/hackweek_monsterhacks.png -------------------------------------------------------------------------------- /app/assets/images/monsterhacks_monsters_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/monsterhacks_monsters_only.png -------------------------------------------------------------------------------- /app/assets/images/suse-logo-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse-logo-black.png -------------------------------------------------------------------------------- /app/assets/images/suse-logo-color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse-logo-color.png -------------------------------------------------------------------------------- /app/assets/images/suse-logo-sketch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse-logo-sketch.png -------------------------------------------------------------------------------- /app/assets/images/suse-logo-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse-logo-white.png -------------------------------------------------------------------------------- /app/assets/images/suse_logo_w-tag_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse_logo_w-tag_black.png -------------------------------------------------------------------------------- /app/assets/images/suse_mark_reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/images/suse_mark_reverse.png -------------------------------------------------------------------------------- /app/assets/javascripts/channels/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SUSE/hackweek/c365d93b6bbf5dcc0add17f179330ceb9f06fa7a/app/assets/javascripts/channels/.keep -------------------------------------------------------------------------------- /app/assets/javascripts/jquery.table-filter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve jQuery Plugin: Table Filter v0.2.2 3 | * 4 | * LICENSE: http://hail2u.mit-license.org/2009 5 | */ 6 | 7 | /*jslint indent: 2, browser: true, regexp: true */ 8 | /*global jQuery, $ */ 9 | 10 | (function ($) { 11 | "use strict"; 12 | 13 | $.fn.addTableFilter = function (options) { 14 | var o = $.extend({}, $.fn.addTableFilter.defaults, options), 15 | tgt, 16 | id, 17 | label, 18 | input; 19 | 20 | if (this.is("table")) { 21 | // Generate ID 22 | if (!this.attr("id")) { 23 | this.attr({ 24 | id: "t-" + Math.floor(Math.random() * 99999999) 25 | }); 26 | } 27 | tgt = this.attr("id"); 28 | id = tgt + "-filtering"; 29 | 30 | // Build filtering form 31 | // label = $("