1

주제: Windows Live Writer에서 Category 가져오는 것 에러 해결

안녕하세요.

TC 1.8로 올라오면서 Windows Live Writer에서 Category를 가져오는데 에러가 나더군요.

개선되기를 기다렸으나 혹시나 하는 생각에 제가 해결하였습니다.

개발 참여를 어떻게 하는지 명확히 잘 모르기에 여기에 해당 코드를 남깁니다.

티켓 생성 및 문제 해결에 도움이 되기를 바랍니다.


TC/library/model/blog.api.php


function metaWeblog_getCategories()
{
    global $hostURL, $blogURL;
    $params = func_get_args();
    $result = api_login( $params[1], $params[2] );
    if( $result )
    {
        return $result;
    }
    
    
    # 카테고리를 가져온다. 같은 폴더의 blog.category.php에 정의
    $rows = getCategories($params[0], 'raw');
    # 기존 코드와 동일
    $cat = array();
    
    # 역시 기존 코드와 비슷하다. 하지만 $rows로 날아오는 것이 해당 blogid에 맞는 카테고리이기에 그것을 하나씩 foreach로 확인하면 된다.
    foreach ($rows as $category)
    {
        # 이건 명확하게 잘 모르겠으나 class Category에 살펴보니 label에 이런 함수를 동원한다. 따라서 추가.
        $label = POD::escapeString(UTF8::lessenAsEncoding($category['name'], 255));
        # 기존 코드와 비슷. $category->label => $label, $category->id => $category['id']로 바꾸기만 했다.
        array_push( $cat, array( 
            'htmlUrl' => "$hostURL$blogURL/category/" . $label,
            //'rssUrl' => "",
            'categoryName' => $label,
            'description' => $label,
            'title' => $label,
            'categoryid' => $category['id'],
            'isPrimary' => true 
            ) );
    }
    
    # 기존 코드와 동일.
    return $cat;
    /*
    기존 코드.
    $category = new Category();
    $category->open(false);


    $cat = array();
    while($category->id)
    {
        array_push( $cat, array( 
            'htmlUrl' => "$hostURL$blogURL/category/" . $category->label,
            //'rssUrl' => "",
            'categoryName' => $category->label,
            'description' => $category->label,
            'title' => $category->label,
            'categoryid' => $category->id,
            'isPrimary' => true 
            ) );
            
        if( !$category->shift() )
        {
            break;
        }
    }

    $category->close();
    return $cat;
    */
}


function mt_getCategoryList()
{
    $params = func_get_args();
    $result = api_login( $params[1], $params[2] );
    if( $result )
    {
        return $result;
    }
    
    # 카테고리를 가져온다. 같은 폴더의 blog.category.php에 정의
    $rows = getCategories($params[0], 'raw');
    # 기존 코드와 동일
    $cat = array();
    
    # 역시 기존 코드와 비슷하다. 하지만 $rows로 날아오는 것이 해당 blogid에 맞는 카테고리이기에 그것을 하나씩 foreach로 확인하면 된다.
    foreach ($rows as $category)
    {
        # 이건 명확하게 잘 모르겠으나 class Category에 살펴보니 label에 이런 함수를 동원한다. 따라서 추가.
        $label = POD::escapeString(UTF8::lessenAsEncoding($category['name'], 255));
        # 기존 코드와 비슷. $category->label => $label, $category->id => $category['id']로 바꾸기만 했다.
        array_push( $cat, array( 
            'categoryName' => $label,
            'categoryId' => $category['id'],
            'isPrimary' => true ) );
    }
    
    # 기존 코드와 동일.
    return $cat;
    
    /*
    $category = new Category();
    $category->open(false);

    $cat = array();
    while(1)
    {
        array_push( $cat, array( 
            'categoryName' => $category->label,
            'categoryId' => $category->id,
            'isPrimary' => true ) );
            
        if( !$category->shift() )
        {
            break;
        }
    }

    $category->close();
    return $cat;
    */
}

NoSyu (2010-02-07 02:11:33)에 의해 마지막으로 수정

c'est un des orgueils de notre pauvre humanité, que chaque homme se croie plus malheureux qu'un autre malheureux qui pleure et qui gémit à côté de lui
    - Le Comte de Monte-Cristo

2

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

가져오기는 가져오는데 WLW에서 글을 쓰고 올리니까 지정한 카테고리를 인식못하네요.

http://nosyu.pe.kr/api?rsd 를 보니

<api name="MetaWeblog" preferred="false" apiLink="http://nosyu.pe.kr/api" blogID="1"/>

라고 되어있던데,

혹시 MetaWeblog는 구현이 덜 된것입니까?

c'est un des orgueils de notre pauvre humanité, que chaque homme se croie plus malheureux qu'un autre malheureux qui pleure et qui gémit à côté de lui
    - Le Comte de Monte-Cristo

3

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

저도 이 문제 때문에 아직 1.7 대 버전을 쓰고 있습니다.
몇 번 이곳 게시판에 해당 문제에 대해서 포스팅이 된 것 같은데...
피드백도 없고...해서 그러려니 하고 있습니다.ㅡ_ㅡ;;;

4

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

tc\framework\legacy\ 에 있는 것들은 후에 지원이 안 되는 것인가요?

여기에 class post, class category 등이 있네요.

그럼 다 수정이 되어야 할 듯싶고...OTL

c'est un des orgueils de notre pauvre humanité, que chaque homme se croie plus malheureux qu'un autre malheureux qui pleure et qui gémit à côté de lui
    - Le Comte de Monte-Cristo

5

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

Class Category를 쓰는 다른 것들도 수정해서 현재 새로운 글 쓰기와 기존 글 가져오기를 할 때 카테고리에서 발생하는 문제 모두를 해결하였습니다.

Class Post도 legacy이기에 수정을 해야하는지는 잘 모르겠습니다만, 일단 지금 안 돌아가는 것을 돌아가도록 만들었습니다.

function api_getCategoryIdByName( $name_array )
{
    if ($name_array === '') return 0;
    if (count($name_array) <= 0) return 0;
    
    $name = strtolower( $name_array[0] );
    
    return getCategoryIdByLabel(getBlogId(), $name);
    /*
    기존 코드
    $category = new Category();
    $category->open(false);
    
    $name = strtolower( $name_array[0] );
    $id = 0;
    $numeric_id = null;
    
    while(1)
    {
        if( strtolower($category->label) == $name ) {
            $id = $category->id;
            break;
        }
        if( $category->id == $name ) {
            $numeric_id = $category->id;
        }
        if( !$category->shift() )
        {
            break;
        }
    }

    if( $id == 0 && $numeric_id !== null ) {
        $id = $numeric_id;
    }
    
    $category->close();
    return $id;
    */
}

function api_getCategoryNameById( $id )
{
    return getCategoryNameById(getBlogId(), $id);
/*
기존 코드
    $category = new Category();
    $category->open();
    
    $name = $id;
    
    while(1)
    {
        if( $category->id == $id )
        {
            $name = $category->name;
            break;
        }
        if( !$category->shift() )
        {
            break;
        }
    }
    
    $category->close();
    return $name;
*/    
}
c'est un des orgueils de notre pauvre humanité, que chaque homme se croie plus malheureux qu'un autre malheureux qui pleure et qui gémit à côté de lui
    - Le Comte de Monte-Cristo

6

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

감사합니다! BlogAPI 맡으시는 coolengineeer님께서 요새 회사일이 굉장히 바쁘셔서 신경을 못 쓰시고 계신듯 합니다^^

1.8.3에 반영될 예정입니다!

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

7

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

일단 기존의 컴포넌트들을 원래 코드에서 문제없이 사용할 수 있는 방향으로 컴포넌트 자체를 수정해 보겠습니다.^^

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

8

답글: Windows Live Writer에서 Category 가져오는 것 에러 해결

http://dev.textcube.org/ticket/1433 에서 수정했구요, 1.8.3에 반영되어 나갈 예정입니다. 감사합니다~ big_smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'