إدارة المواضيع

Topic هو تصنيف لتجميع عناصر البث CourseWork و CourseWorkMaterial ضمن دورة تدريبية. يتم استخدام Topic عادةً لتصنيف هذه العناصر حسب التشابه، مثل الأسبوع الذي تم تخصيص العناصر له أو موضوعها. يمكن للمستخدمين تنظيم عناصر ساحة المشاركات وفلترتها بشكل مرئي في عرض واجبات الفصل الدراسي في واجهة مستخدم Classroom.

يتم تحديد كل Topic من خلال معرّف فريد يحدّده الخادم. يحتوي مرجع Topic أيضًا على ما يلي:

  • name: الاسم المعروض في واجهة مستخدم Classroom
  • updateTime: وقت آخر تعديل على Topic
  • courseId: معرّف الدورة التدريبية المرتبطة بالعنصر Topic

إنشاء موضوع

يمكنك إنشاء Topic جديد في دورة تدريبية باستخدام طريقة topics.create()، كما هو موضّح في المثال التالي:

Java

classroom/snippets/src/main/java/CreateTopic.java
Topic topic = null;
try {
  // Create the new Topic.
  Topic content = new Topic().setName("Semester 1");
  topic = service.courses().topics().create(courseId, content).execute();
  System.out.println("Topic id: " + topic.getTopicId() + "\n" + "Course id: " + courseId);
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId does not exist: %s.\n", courseId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topic;

Python

topic = {
    "name": 'Example Topic'
}
response = service.courses().topics().create(
  courseId=<course ID or alias>,
  body=topic).execute()
print('Topic created: ', response['name'])

يكون الحقل name مطلوبًا دائمًا ويجب أن يكون سلسلة غير فارغة. وجميع الحقول الأخرى اختيارية.

استرداد تفاصيل الموضوع

يمكنك استرداد Topic معيّن حسب رقم التعريف باستخدام الطريقة topics.get()، كما هو موضح في المثال التالي:

Java

classroom/snippets/src/main/java/GetTopic.java
Topic topic = null;
try {
  // Get the topic.
  topic = service.courses().topics().get(courseId, topicId).execute();
  System.out.printf("Topic '%s' found.\n", topic.getName());
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId or topicId does not exist: %s, %s.\n", courseId, topicId);
  }
  throw e;
} catch (Exception e) {
  throw e;
}
return topic;

Python

response = service.courses().topics().get(
  courseId=<course ID or alias>,
  id=<topic ID>).execute()
print('{0} ({1})'.format(response['name'], response['topicId']))

استخدِم الطريقة topics.list() لاسترداد جميع Topic في دورة تدريبية، كما هو موضّح في العيّنة التالية:

Java

classroom/snippets/src/main/java/ListTopics.java
List<Topic> topics = new ArrayList<>();
String pageToken = null;

try {
  do {
    ListTopicResponse response =
        service
            .courses()
            .topics()
            .list(courseId)
            .setPageSize(100)
            .setPageToken(pageToken)
            .execute();

    /* Ensure that the response is not null before retrieving data from it to avoid errors. */
    if (response.getTopic() != null) {
      topics.addAll(response.getTopic());
      pageToken = response.getNextPageToken();
    }
  } while (pageToken != null);

  if (topics.isEmpty()) {
    System.out.println("No topics found.");
  } else {
    for (Topic topic : topics) {
      System.out.printf("%s (%s)\n", topic.getName(), topic.getTopicId());
    }
  }
} catch (GoogleJsonResponseException e) {
  // TODO (developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId does not exist: %s.\n", courseId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topics;

Python

topics = []
page_token = None
while True:
    response = service.courses().topics().list(
        pageToken=page_token,
        pageSize=30,
        courseId=<course ID or alias>).execute()
    topics.extend(response.get('topic', []))
    page_token = response.get('nextPageToken', None)
    if not page_token:
        break
if not topics:
    print('No topics found.')
else:
    print('Topics:')
    for topic in topics:
        print('{0} ({1})'.format(topic['name'], topic['topicId']))

تعديل موضوع

يمكنك تعديل Topic name حالي باستخدام الطريقة topics.patch()، كما هو موضح في المثال التالي:

Java

classroom/snippets/src/main/java/UpdateTopic.java
Topic topic = null;
try {
  // Retrieve the topic to update.
  Topic topicToUpdate = service.courses().topics().get(courseId, topicId).execute();

  // Update the name field for the topic retrieved.
  topicToUpdate.setName("Semester 2");

  /* Call the patch endpoint and set the updateMask query parameter to the field that needs to
  be updated. */
  topic =
      service
          .courses()
          .topics()
          .patch(courseId, topicId, topicToUpdate)
          .set("updateMask", "name")
          .execute();

  /* Prints the updated topic. */
  System.out.printf("Topic '%s' updated.\n", topic.getName());
} catch (GoogleJsonResponseException e) {
  // TODO(developer) - handle error appropriately
  GoogleJsonError error = e.getDetails();
  if (error.getCode() == 404) {
    System.out.printf("The courseId or topicId does not exist: %s, %s.\n", courseId, topicId);
  } else {
    throw e;
  }
} catch (Exception e) {
  throw e;
}
return topic;

Python

topic = {
  "name": "New Topic Name"
}
response = service.courses().topics().patch(
  courseId=<course ID or alias>,
  id=<topic ID>,
  updateMask="name",
  body=topic).execute()
print('{0} ({1})'.format(response['name'], response['topicId']))

يتم إنشاء حقلَي Topic وid وupdateTime من خلال الخادم ولا يمكن تعديلهما باستخدام واجهة برمجة التطبيقات.

حذف موضوع

يمكنك حذف Topic حالي باستخدام طريقة topics.delete()، كما هو موضّح في العيّنة التالية:

Java

classroom/snippets/src/main/java/DeleteTopic.java
try {
  service.courses().topics().delete(courseId, topicId).execute();
} catch (GoogleJsonResponseException e) {
  // TODO(developer) - handle error appropriately
  throw e;
} catch (Exception e) {
  throw e;
}