GithubHelp home page GithubHelp logo

liuchaovsyan / eeodocumenturl Goto Github PK

View Code? Open in Web Editor NEW

This project forked from classin/eeodocumenturl

0.0 1.0 0.0 101.34 MB

Document and demo for .edu file in ClassIn.

License: GNU Affero General Public License v3.0

eeodocumenturl's Introduction

API

实现的功能:

从云盘打开 edu 格式的文件,classin 能打开该文件指定的页面,该类课件内容的同步由第三方自行处理,classin只负责窗口信息(位置、前后关系及全屏状态)的同步。

edu 文件格式说明

edu 格式内容为一个 json,样例如下,key 不能改,值可以根据需求调整,数据大小写敏感,使用无 BOM 的 UTF-8 编码:

{
    "url":"http://www2.bing.com?key=value#anchorHash",
    "uid":true,
    "nickname":true,
    "identity":true,
    "title":"CET4 测试",
    "size":"800x600,400x300",
    "classin_authority":true
}
ClassIn 会默认传入以下参数:
  • 学校ID,schoolId=<64位无符号整数>
  • 课程ID,courseId=<64位无符号整数>
  • 课节ID,classId=<64位无符号整数>
  • 客户端类型,deviceType=<字符串>,目前的取值范围是 pc, android, iPhone, iPad
  • 客户端语言,lang=<字符串>,目前的取值范围是 en(英语), zh-CN(简体中文), zh-TW(繁体中文), es(西班牙语,ClassIn2.2.7.68引入)
edu 文件必填项:
  • url 需要打开的网址
edu 文件选填项:
  • 如果 uid 字段为 true,表示 classin 打开 url 时后面会加上 uid=<登录者的uid>
  • 如果 nickname 字段为 true,表示 classin 打开 url 时后面会加上 nickname=<登录者的nickname>
  • 如果 identity 字段为 true,表示 classin 打开 url 时后面会加上 identity=<登录者的角色>,该值是一个字符串,取值范围是 teacher, assistant, student, auditor
  • 如果包含 title 字段,则课件标题栏会显示此字符串,数据使用 utf-8 编码
  • 如果 classin_authority 字段为 true,表示会使用 classin 的课件授权规则(即由老师在课堂中控制学生的授权状态),否则网页内容一直是可操作的状态。auditor 角色永远没有权限
  • 如果包含 size 字段,值为两组宽高,第一组是打开时窗口的推荐大小,第二组是窗口的最小限制,默认为"600x400,300x200"

添加参数后的完整 url 示例: http://11.33.55.77:9999/index_exam.html?schoolId=111111&courseId=222222&classId=3333333&uid=666666&nickname=call me student&identity=teacher&deviceType=pc&lang=zh-CN

ClassIn 中的 edu 文件示例见 eeo_cn_exam_demo.edu

注意事项
  1. PC 端在使用简体中文时传给网页的语言参数有误,老版本传的是zh,后续更新的版本会修改为本文档里约定的zh-CN,移动端无此问题。期间机构的开发者处理多语言的时候可能需要兼容这两个值,伪代码如下:
if (lang == "zh" || lang == "zh-CN") { // 需要判断两个值
    // 显示简体中文界面
} else if (lang == "zh-TW") {
    // 显示繁体中文界面
} else if (lang == "es") {
    // 显示西班牙语界面
} else {
    // 显示英文界面
}
  1. 开发时请注意不要在发布环境中弹独立的窗口(如alert),否则接收端可能会闪退。保留 alert 弹窗仅作为开发阶段调试使用。如果需要弹窗的话,发布环境中应该在 classin 的 edu 课件框内显示提示框。

在线答题demo (socket.io)

一个简易的在线考试系统,支持老师开启考试,查看学生答题状况,收卷,关闭考场,学生答题。

本 demo 主要实现方式为由 ClassIn 在线教室在地址栏加入 get 参数,传入课程 id、课节 id、用户 id、用户昵称、以及用户身份,然后第三方实现该用户在第三方的登陆接入以及和其他接入用户的互动交互。

本 demo 的服务器环境基于 nodejs,用户间的交互数据通过 websocket 实现。

Install

  1. 安装 nodejs

  2. 在程序根目录打开命令行工具

  3. 在命令行工具输入并执行 npm install 安装必要模块

  4. 在命令行工具输入并执行 node app_exam.js 启动服务器环境

  5. 使用chrome内核的浏览器访问 http://demo_host:3000/index.html?[用户相关信息参数];

  6. 用户相关信息参数介绍 基本格式:courseId=[课程id]&classId=[课节id]&uid=[用户id]&nickname=[用户昵称encodeURIComponent]&identity=[用户身份]。

  7. 场景模拟 老师登陆:http://demo_host:3000/index.html?courseId=1000&classId=2000001&uid=300001&nickname=%E7%8E%8B%E8%80%81%E5%B8%88&identity=teacher&lang=zh-CN

    学生A登陆:http://demo_host:3000/index.html?courseId=1000&classId=2000001&uid=300002&nickname=%E5%AD%A6%E7%94%9FA&identity=student&lang=zh-CN

    学生B登陆:http://demo_host:3000/index.html?courseId=1000&classId=2000001&uid=300003&nickname=%E5%AD%A6%E7%94%9FB&identity=student&lang=zh-CN

ClassIn 使用的浏览器

  • PC 版: Qt5.5.1 对应的 QtWebkit,可用该文档附带的 browser 目录里的 fancybrowser 测试(注意:PC 版浏览器不支持 Flash,不支持 es6 语法,内核基于webkit 。
  • iOS 版: 手机/Pad 系统自带的 safari
  • Android 版:手机/Pad 系统自带的浏览器

目录结构

demo/                       答题 demo
example.edu                 答题 demo对应的 edu 文件(使用时需要将 url 里的 IP 改成开发者的服务器的 IP 或域名)
eeo_cn_exam_demo.edu        答题 demo对应的 edu 文件(可以直接上传到 ClassIn 里演示)
browser/                    用于调 html5 代码兼容性
browser/fancybrowser.dmg    PC Mac版浏览器
browser/fancybrowser.zip    PC windows 版浏览器,解压后运行 fancybrowser.exe 即可

eeodocumenturl's People

Contributors

luozikuan avatar devceezi avatar classin avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.