Skip to content

kinders/xxb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

“学学半”是一套用 ruby on rails 开发的教学站点。

  • 部署于个人电脑中,通过小型的家用路由器,教师和学生可通过多种电子设备(如电脑,手机,平板)进行交互。

  • 部署于学校的服务器中,通过覆盖全校的路由器,供全校师生共同使用,教师之间学生之间可以共享数据资源。

  • 部署于培训机构的服务器中,可使用登录计费模块进行收费管理,因此这个软件可以用于商业。

  • 部署于云端,通过互联网,服务于世界各地的用户。

学学半包含三个模块:内容管理模块,教学管理模块,登录计费模块。

  • 创建教科书

  • 为教科书添加课文

  • 对课文进行字词分析

  • 为课文内容添加辅导页面

  • 为课文内容添加习题

  • 为课文内容添加某种教学方式(有效组织辅导页面)

  • 按教学方式安排辅导页面和习题

  • 依据记忆曲线进行卡片式练习

  • 对所学卡片进行抽查自测

  • 使用习题进行随机测试,评价测试

  • 将习题组织成试卷,并可限定考试时间,

  • 批改答卷

  • 创建班级

  • 为班级添加学生、班干和各科教师

  • 对学生进行各种分组

  • 对小组进行评价

  • 对班级进行教学

  • 布置作业,对作业进行评价

  • 班干和教师可对学生的不良记录进行登记和消除

  • 利用特定试卷安排班级测验,查看答题,按班级批改答卷

  • 用户登录管理,可区分计时用户和特别不计时用户

  • 根据计时用户的登录时间,逾期强制下线,充值续时

  • 收费管理,出纳现金管理。

  • 用户社交(主要是信息交流,不考虑博文留言)

  • 学长辅导付费模式。(这是淘宝模式?谁要喔?)

  • 多媒体。(硬盘空间得多大啊!不考虑,待多媒体技术稳定再说)

  • Ubuntu 14.04

  • Ruby 2.2.0

  • Rails 4.2.0

  • Sqlite3

  • 安装 rvm 。详见 www.rvm.io。一般是两步:

    $ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    $ \curl -sSL https://get.rvm.io | bash -s stable
  • 安装 ruby。 在终端输入‘$ rvm install 2.2.0`

  • 安装 rails。在终端输入‘$ gem install rails –version 4.2.0 –no-ri –no-rdoc`

  • 安装 git。在终端输入‘sudo apt-get install git`

  • 获取“学学半”代码。在终端输入‘$ git clone www.github.com/kinders/xxb.git`

  • 配置“学学半”。进入学学半的目录中,在终端输入‘$ bundle install`

这个软件包逐个导入js文件,将会拖慢网页的加载时间。可以将gem包里的bootstrap.js文件替换为官网下载的压缩过的bootstrap.min.js(当然,这个文件需要命名为bootsrap.js。

  • 更换内核

Ckeditor的内核比较陈旧,并且没有数学公式的编辑功能,可以将它替换掉。ckeditor的自定义方式见: www.ckeditor.com/builder ,选择需要的插件即可下载替换。编辑数学公式则需要‘Mathematical Formulas`插件。替换路径为`~/.rvm/gems/ruby/gems/ckeditor-x-x-x/vendor/assets/javascripts/`。

  • 推荐安装插件有:

    - Color Button
    - Enhanced Image
    - Find / Replace
    - Font Size and Family
    - Image Rotate
    - Justify
    - Mathematical Formulas
    - Print
    - Select All
  • 配置ckeditor

具体位置是:~/.rvm/gems/ruby/gems/ckeditor/app/assets/javascripts/ckeditor/config.js 第一,加入mathjax的获取路径:

config.mathJaxLib = '/mathjax/MathJax.js?config=TeX-AMS_HTML';

第二,工具栏:用下面这一段更换gem包中原有的代码,不要依赖app里的config.js,那会导致图片上传功能消失的bug。

  config.toolbar = [
  { name: 'clipboard', groups: [ 'clipboard', 'undo' ], items: ['Undo', 'Redo', '-', 'SelectAll', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord' ] },
  { name: 'editing', groups: [ 'find', 'selection', 'spellchecker' ], items: [ 'Find', 'Replace', '-', 'Scayt' ] },
  // { name: 'forms', items: [ 'Form', 'Checkbox', 'Radio', 'TextField', 'Textarea', 'Select', 'Button', 'ImageButton', 'HiddenField' ] },
  { name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },
  { name: 'insert', items: [ 'NumberedList', 'BulletedList', '-', 'Blockquote', 'CreateDiv', '-', 'Image', 'Mathjax', 'Flash', 'Table', 'HorizontalRule', 'SpecialChar' ] },
  { name: 'document', groups: [ 'mode', 'document', 'doctools' ], items: [ 'Print', 'Source', 'Maximize'] },
  '/',
  // { name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] },
  { name: 'styles', items: [ 'Format', 'Font', 'FontSize' ] },
  { name: 'colors', items: [ 'TextColor', 'BGColor' ] },
  { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ], items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] },
  { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ], items: ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'Outdent', 'Indent' ] }
];
  • 禁用Ckeditor的图片服务器功能。

在‘~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/plugins/`路径下有image/dialogs/image.jslink/dialogs/link.jsflash/dialogs/flash.js三个文件,将三个文件里面browseserverfilebrowsersstyle改为`display: none;`

  • 删除sample文件。

如果没有删除sample文件,部署时预编译assets就会出错。需要删除的文件夹:

- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/samples/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/sample/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/scss/`
- `~/.rvm/gems/ruby/gems/ckeditor/vendor/assets/javascripts/ckeditor/skins/xxx/.temp/`
  • 创建config/database.yml文件,内容如下:

    default: &default
      adapter: sqlite3
      pool: 5
      timeout: 5000
    development:
      <<: *default
      database: db/development.sqlite3
    test:
      <<: *default
      database: db/test.sqlite3
    production:
      <<: *default
      database: db/production.sqlite3
  • 创建config/secrets.yml文件,生成密钥。

    development:
      secret_key_base: <128位的乱序英文和数字字符>
    test:
      secret_key_base: <128位的乱序英文和数字字符>
    production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  • 创建config/initializers/secret_token.rb文件,生成密钥。

    Depot::Application.config.secret_key_base = '<128位的乱序英文和数字字符>'
    
  • 该数据库一些字段信息参见xxb.ods。

生成数据库:‘$ rake db:setup`

将第一个用户自动设置为管理员的做法司空常见,但这种做法显然不够严谨。基于系统安全,开发人员抛弃了这种做法。当然这么做需要付出点代价:

  • 首先进入本应用的目录,在终端(Terminal)里打开rails后台:‘$ rails console`

  • 在后台输入:

    user = User.find(who_id)  # who_id 就是拥有管理员权限的那个人的用户id。
    user.add_role :admin
    

于是后台会弹出类似如下的提示,就表明添加管理员权限成功了:

(0.0ms)  begin transaction
SQL (0.2ms)  INSERT INTO "users_roles" ("user_id", "role_id") VALUES (?, ?)  [["user_id", 2], ["role_id", 1]]
 (130.3ms)  commit transaction
  • 关闭后台:exit,关闭终端,就可以了。

  • 内伤啊!

  • 暂无。

  • 部署在云端时,应该启用Mailer,并补充代码

推荐使用Passenger和Nginx

  • 安装postgresql数据库,创建项目使用的数据库,修改文件config/database.yml,初始化生产数据库。

  • 安装passenger。在终端输入‘$ gem install passenger`

  • 安装nginx。在终端输入‘$ passenger install nginx-module`,安装位置选择/opt/nginx

  • 配置nginx。修改/opt/nginx/conf/nginx.conf文件

    server {  
            listen       80;  
            server_name  localhost;  
            root /xx/xx/rails_app/public;  
            passenger_enabled on;  
            rails_env production;  
    }
    
  • 预编译assets。在终端输入‘$ RAILS_ENV=production rake assets:precompile`

  • 启动“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx`

  • 关闭“学学半”。在终端输入‘$ sudo /opt/nginx/sbin/nginx -s quit`

  • 许可证:GPLv3。

  • 这是一个自由软件,您可自由复制、自由使用、自由修改,乃至发布为新的自由软件。

  • 需要其他许可证的,可与作者联系。

About

学学半,一个基于网络的实用教学工具

Resources

Stars

3 stars

Watchers

2 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages