Class: Wikidotrb::Module::Page
- Inherits:
-
Object
- Object
- Wikidotrb::Module::Page
- Defined in:
- lib/wikidotrb/module/page.rb
Instance Attribute Summary collapse
-
#_discuss
Returns the value of attribute _discuss.
-
#_id
Returns the value of attribute _id.
-
#_revisions
Returns the value of attribute _revisions.
-
#_source
Returns the value of attribute _source.
-
#_votes
Returns the value of attribute _votes.
-
#category
Returns the value of attribute category.
-
#children_count
Returns the value of attribute children_count.
-
#commented_at
Returns the value of attribute commented_at.
-
#commented_by
Returns the value of attribute commented_by.
-
#comments_count
Returns the value of attribute comments_count.
-
#created_at
Returns the value of attribute created_at.
-
#created_by
Returns the value of attribute created_by.
-
#fullname
Returns the value of attribute fullname.
-
#name
Returns the value of attribute name.
-
#parent_fullname
Returns the value of attribute parent_fullname.
-
#rating
Returns the value of attribute rating.
-
#rating_percent
Returns the value of attribute rating_percent.
-
#revisions_count
Returns the value of attribute revisions_count.
-
#site
Returns the value of attribute site.
-
#size
Returns the value of attribute size.
-
#tags
Returns the value of attribute tags.
-
#title
Returns the value of attribute title.
-
#updated_at
Returns the value of attribute updated_at.
-
#updated_by
Returns the value of attribute updated_by.
-
#votes_count
Returns the value of attribute votes_count.
Class Method Summary collapse
Instance Method Summary collapse
- #delete_meta(name)
- #destroy
- #discuss
- #discuss=(value)
- #edit(title: nil, source: nil, comment: nil, force_edit: false)
- #get_metas
- #get_url
- #id
- #id=(value)
-
#initialize(site:, fullname:, name: "", category: "", title: "", children_count: 0, comments_count: 0, size: 0, rating: 0, votes_count: 0, rating_percent: 0, revisions_count: 0, parent_fullname: "", tags: [], created_by: nil, created_at: nil, updated_by: nil, updated_at: nil, commented_by: nil, commented_at: nil, _id: nil, _source: nil, _revisions: nil, _votes: nil, _discuss: nil) ⇒ Page
constructor
A new instance of Page.
- #is_discuss_acquired? ⇒ Boolean
- #is_id_acquired? ⇒ Boolean
- #latest_revision
- #revisions
- #revisions=(value)
- #set_meta(name, value)
- #set_tags(tags)
- #source
- #source=(value)
- #votes
- #votes=(value)
Constructor Details
#initialize(site:, fullname:, name: "", category: "", title: "", children_count: 0, comments_count: 0, size: 0, rating: 0, votes_count: 0, rating_percent: 0, revisions_count: 0, parent_fullname: "", tags: [], created_by: nil, created_at: nil, updated_by: nil, updated_at: nil, commented_by: nil, commented_at: nil, _id: nil, _source: nil, _revisions: nil, _votes: nil, _discuss: nil) ⇒ Page
Returns a new instance of Page.
366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 |
# File 'lib/wikidotrb/module/page.rb', line 366 def initialize(site:, fullname:, name: "", category: "", title: "", children_count: 0, comments_count: 0, size: 0, rating: 0, votes_count: 0, rating_percent: 0, revisions_count: 0, parent_fullname: "", tags: [], created_by: nil, created_at: nil, updated_by: nil, updated_at: nil, commented_by: nil, commented_at: nil, _id: nil, _source: nil, _revisions: nil, _votes: nil, _discuss: nil) @site = site @fullname = fullname @name = name @category = category @title = title @children_count = children_count @comments_count = comments_count @size = size @rating = @votes_count = votes_count @rating_percent = @revisions_count = revisions_count @parent_fullname = parent_fullname @tags = @created_by = created_by @created_at = created_at @updated_by = updated_by @updated_at = updated_at @commented_by = commented_by @commented_at = commented_at @_id = _id @_source = _source @_revisions = _revisions @_votes = _votes @_discuss = _discuss end |
Instance Attribute Details
#_discuss
Returns the value of attribute _discuss.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def _discuss @_discuss end |
#_id
Returns the value of attribute _id.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def _id @_id end |
#_revisions
Returns the value of attribute _revisions.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def _revisions @_revisions end |
#_source
Returns the value of attribute _source.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def _source @_source end |
#_votes
Returns the value of attribute _votes.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def _votes @_votes end |
#category
Returns the value of attribute category.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def category @category end |
#children_count
Returns the value of attribute children_count.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def children_count @children_count end |
#commented_at
Returns the value of attribute commented_at.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def commented_at @commented_at end |
#commented_by
Returns the value of attribute commented_by.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def commented_by @commented_by end |
#comments_count
Returns the value of attribute comments_count.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def comments_count @comments_count end |
#created_at
Returns the value of attribute created_at.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def created_at @created_at end |
#created_by
Returns the value of attribute created_by.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def created_by @created_by end |
#fullname
Returns the value of attribute fullname.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def fullname @fullname end |
#name
Returns the value of attribute name.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def name @name end |
#parent_fullname
Returns the value of attribute parent_fullname.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def parent_fullname @parent_fullname end |
#rating
Returns the value of attribute rating.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def @rating end |
#rating_percent
Returns the value of attribute rating_percent.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def @rating_percent end |
#revisions_count
Returns the value of attribute revisions_count.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def revisions_count @revisions_count end |
#site
Returns the value of attribute site.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def site @site end |
#size
Returns the value of attribute size.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def size @size end |
#tags
Returns the value of attribute tags.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def @tags end |
#title
Returns the value of attribute title.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def title @title end |
#updated_at
Returns the value of attribute updated_at.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def updated_at @updated_at end |
#updated_by
Returns the value of attribute updated_by.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def updated_by @updated_by end |
#votes_count
Returns the value of attribute votes_count.
360 361 362 |
# File 'lib/wikidotrb/module/page.rb', line 360 def votes_count @votes_count end |
Class Method Details
.create_or_edit(site:, fullname:, page_id: nil, title: "", source: "", comment: "", force_edit: false, raise_on_exists: false)
515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 |
# File 'lib/wikidotrb/module/page.rb', line 515 def self.create_or_edit(site:, fullname:, page_id: nil, title: "", source: "", comment: "", force_edit: false, raise_on_exists: false) site.client.login_check page_lock_request_body = { mode: "page", wiki_page: fullname, moduleName: "edit/PageEditModule" } page_lock_request_body[:force_lock] = "yes" if force_edit # Requesting page lock page_lock_response_data = site.amc_request(bodies: [page_lock_request_body])[0] # Handling page lock errors if page_lock_response_data.nil? || page_lock_response_data["locked"] || page_lock_response_data["other_locks"] raise Wikidotrb::Common::Exceptions::TargetErrorException, "Page #{fullname} is locked or other locks exist" end is_exist = page_lock_response_data.key?("page_revision_id") raise Wikidotrb::Common::Exceptions::TargetExistsException, "Page #{fullname} already exists" if raise_on_exists && is_exist raise ArgumentError, "page_id must be specified when editing existing page" if is_exist && page_id.nil? lock_id = page_lock_response_data["lock_id"] lock_secret = page_lock_response_data["lock_secret"] page_revision_id = page_lock_response_data["page_revision_id"] edit_request_body = { action: "WikiPageAction", event: "savePage", moduleName: "Empty", mode: "page", lock_id: lock_id, lock_secret: lock_secret, revision_id: page_revision_id || "", wiki_page: fullname, page_id: page_id || "", title: title, source: source, comments: comment } response_data = site.amc_request(bodies: [edit_request_body])[0] unless response_data && response_data["status"] == "ok" error_status = response_data.nil? ? "no_response" : response_data["status"] raise Wikidotrb::Common::Exceptions::WikidotStatusCodeException.new( "Failed to create or edit page: #{fullname}", error_status ) end res = PageCollection.search_pages(site, SearchPagesQuery.new(fullname: fullname)) puts "Search result: #{res.inspect}" raise Wikidotrb::Common::Exceptions::NotFoundException, "Page creation failed: #{fullname}" if res.empty? res[0] end |
Instance Method Details
#delete_meta(name)
502 503 504 505 506 507 508 509 510 511 512 513 |
# File 'lib/wikidotrb/module/page.rb', line 502 def (name) @site.client.login_check @site.amc_request(bodies: [ { metaName: name, action: "WikiPageAction", event: "deleteMetaTag", pageId: id, moduleName: "edit/EditMetaModule" } ]) end |
#destroy
464 465 466 467 468 469 470 471 472 473 474 |
# File 'lib/wikidotrb/module/page.rb', line 464 def destroy @site.client.login_check @site.amc_request(bodies: [ { action: "WikiPageAction", event: "deletePage", page_id: id, moduleName: "Empty" } ]) end |
#discuss
397 398 399 400 401 |
# File 'lib/wikidotrb/module/page.rb', line 397 def discuss PageCollection.new(site: @site, pages: [self]).get_page_discuss if @_discuss.nil? @_discuss.update @_discuss end |
#discuss=(value)
403 404 405 |
# File 'lib/wikidotrb/module/page.rb', line 403 def discuss=(value) @_discuss = value end |
#edit(title: nil, source: nil, comment: nil, force_edit: false)
575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 |
# File 'lib/wikidotrb/module/page.rb', line 575 def edit(title: nil, source: nil, comment: nil, force_edit: false) title ||= @title source ||= @source.wiki_text comment ||= "" Page.create_or_edit( site: @site, fullname: @fullname, page_id: id, title: title, source: source, comment: comment, force_edit: force_edit ) end |
#get_metas
476 477 478 479 480 481 482 483 484 485 486 |
# File 'lib/wikidotrb/module/page.rb', line 476 def response_data = @site.amc_request(bodies: [{ pageId: id, moduleName: "edit/EditMetaModule" }])[0] body = response_data["body"] = {} body.scan(/<meta name="([^"]+)" content="([^"]+)"/) do || [[0]] = [1] end end |
#get_url
411 412 413 |
# File 'lib/wikidotrb/module/page.rb', line 411 def get_url "#{@site.get_url}/#{@fullname}" end |
#id
415 416 417 418 |
# File 'lib/wikidotrb/module/page.rb', line 415 def id PageCollection.new(site: @site, pages: [self]).get_page_ids if @_id.nil? @_id end |
#id=(value)
420 421 422 |
# File 'lib/wikidotrb/module/page.rb', line 420 def id=(value) @_id = value end |
#is_discuss_acquired? ⇒ Boolean
407 408 409 |
# File 'lib/wikidotrb/module/page.rb', line 407 def is_discuss_acquired? !@_discuss.nil? end |
#is_id_acquired? ⇒ Boolean
424 425 426 |
# File 'lib/wikidotrb/module/page.rb', line 424 def is_id_acquired? !@_id.nil? end |
#latest_revision
446 447 448 449 450 451 452 453 |
# File 'lib/wikidotrb/module/page.rb', line 446 def latest_revision # Get the one where revision_count and rev_no match @revisions.each do |revision| return revision if revision.rev_no == @revisions_count end raise Wikidotrb::Common::Exceptions::NotFoundException, "Cannot find latest revision" end |
#revisions
437 438 439 440 |
# File 'lib/wikidotrb/module/page.rb', line 437 def revisions PageCollection.new(site: @site, pages: [self]).get_page_revisions if @_revisions.nil? PageRevisionCollection.new(page: self, revisions: @_revisions) end |
#revisions=(value)
442 443 444 |
# File 'lib/wikidotrb/module/page.rb', line 442 def revisions=(value) @_revisions = value end |
#set_meta(name, value)
488 489 490 491 492 493 494 495 496 497 498 499 500 |
# File 'lib/wikidotrb/module/page.rb', line 488 def (name, value) @site.client.login_check @site.amc_request(bodies: [ { metaName: name, metaContent: value, action: "WikiPageAction", event: "saveMetaTag", pageId: id, moduleName: "edit/EditMetaModule" } ]) end |
#set_tags(tags)
591 592 593 594 595 596 597 598 599 600 601 602 |
# File 'lib/wikidotrb/module/page.rb', line 591 def () @site.client.login_check @site.amc_request(bodies: [ { tags: .join(" "), action: "WikiPageAction", event: "saveTags", pageId: id, moduleName: "Empty" } ]) end |
#source
428 429 430 431 |
# File 'lib/wikidotrb/module/page.rb', line 428 def source PageCollection.new(site: @site, pages: [self]).get_page_sources if @_source.nil? @_source end |
#source=(value)
433 434 435 |
# File 'lib/wikidotrb/module/page.rb', line 433 def source=(value) @_source = value end |
#votes
455 456 457 458 |
# File 'lib/wikidotrb/module/page.rb', line 455 def votes PageCollection.new(site: @site, pages: [self]).get_page_votes if @_votes.nil? @_votes end |
#votes=(value)
460 461 462 |
# File 'lib/wikidotrb/module/page.rb', line 460 def votes=(value) @_votes = value end |